代码之家  ›  专栏  ›  技术社区  ›  JohnBigs

使用mongodb(3.4)在一个db调用中执行两个不同的操作

  •  0
  • JohnBigs  · 技术社区  · 6 年前

    我有一个物体看起来像:

    {
        "personId": "134698",
        "name": "john",
        "age": 30,
        "contacts": 
        [
            {
                "name": "mark",
                "email": "mark@gmail.com"
            },
            {
                "name": "maria",
                "email": "maria@gmail.com"
            }
        ],
        "lastEdited": "2017-01-01"
    }
    

    我想更新添加新联系人,所以我要:

    db.people.findAndModify({
        query: { "personId": "134698" },
        update: {"$push":{"contacts":{"name":"john","email":"john@gmail.com","phoneNumber":"9384608374"}}}
    })
    

    问题是,我想在推送新联系人后设置“lastedited”,我可以将其放在同一个呼叫中,还是必须进行另一个db呼叫?

    我正在和Mongo3.4合作,目前无法升级,我知道没有交易,所以如果我需要两个电话,这很烦人,因为我需要在这里保护自己…

    这里有什么建议吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   matthPen    6 年前

    db.col1.findAndModify({
        query: { "personId": "134698" },
        update: {"$addToSet":{"contacts":{"name":"john2","email":"john@gmail.com","phoneNumber":"9384608374"}},"$set":{"lastEdited" : new Date()}}
    })