使用mongodb(3.4)在一个数据库调用中执行两种不同的操作

时间:2018-07-12 12:51:07

标签: mongodb

我有一个看起来像的对象

{
    "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”,我可以在同一呼叫中使用它还是必须进行另一个数据库呼叫?

我正在与mongo 3.4一起使用,目前无法升级,我知道目前还没有交易,因此如果我需要两次通话,这很烦人,我需要在这里保护自己...

这里有什么建议吗?

1 个答案:

答案 0 :(得分:0)

只需添加$ set即可更新:

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