我有一个看起来像的对象
{
"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一起使用,目前无法升级,我知道目前还没有交易,因此如果我需要两次通话,这很烦人,我需要在这里保护自己...
这里有什么建议吗?
答案 0 :(得分:0)
只需添加$ set即可更新:
db.col1.findAndModify({
query: { "personId": "134698" },
update: {"$addToSet":{"contacts":{"name":"john2","email":"john@gmail.com","phoneNumber":"9384608374"}},"$set":{"lastEdited" : new Date()}}
})