我可以在mongodb中使用或查询部分更新方法吗? 如果是,那么我做错了什么因为upsert不起作用。 当我使用并且不使用或时,我得到两种不同类型的结果。 当我使用或仅插入data.message时,当我使用时不使用或插入所有数据(如果它不存在)并且存在data.messages被添加到消息中。
db.chatdata.update(
{$or:[
{'receiverId':data.receiver_id,
'senderId':data.sender_id
},
{'receiverId':data.sender_id,
'senderId':data.receiver_id
}]
},
{$addToSet:{'messages':data.message}},
{upsert:true},
callback)
预期产出
{
"_id" : ObjectId("5986f850e1bf9b531154e52d"),
"receiverId" : "5985864dd06db71fa4c2ce69",
"senderId" : "59857707f6de9106fc936003",
"messages" : [
{
"_id" : ObjectId("5986f8509bda810a140e975d"),
"message" : "hello apple",
"time" : "1502017616523"
},
{
"_id" : ObjectId("5986f8a19bda810a140e9768"),
"message" : "hello apple",
"time" : "1502017697484"
}
],
"__v" : 0
}
实际输出
{
"_id" : ObjectId("59872ec4e1bf9b531154eedd"),
"messages" : [
{
"_id" : ObjectId("59872ec4827f9737949589f3"),
"message" : "helo",
"time" : "1502031556694"
}
],
"__v" : 0
}