是否可以在mongodb

时间:2017-08-06 15:28:58

标签: mongodb

我可以在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

}

0 个答案:

没有答案