mongodb - 使用 mongodb (3.4) 在一个数据库调用中执行两个不同的操作
问题描述
我有一个看起来像的对象:
{
"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 并且目前无法升级,而且我知道没有交易,所以如果我需要两次调用它,这很烦人,我需要在这里保护自己......
这里有什么建议吗?
解决方案
只需添加 $set 即可更新:
db.col1.findAndModify({
query: { "personId": "134698" },
update: {"$addToSet":{"contacts":{"name":"john2","email":"john@gmail.com","phoneNumber":"9384608374"}},"$set":{"lastEdited" : new Date()}}
})