繁体   English   中英

NodeJS MongoDB 投影不起作用

[英]NodeJS MongoDB Projection not working

我使用以下代码在 NodeJS 上做了一个 findOneAndUpdate

var themessageid = "ID of message A"
workstreamchat.findOneAndUpdate(
    { 'chat.sidmessage': themessageid }, 
    { '$set': { 
        'chat.$.linkinfo': linkinfo 
    } }, 
    { returnOriginal: false }, 
    function(err, res) {
        console.log(res);            
    }
);

例如返回的文件

{
    "_id": "mongoid",
    "chat": [
        {
            "sidmessage": "id_of_message_A",
            "usersid": "38jrc05h14avm14e",
            "messageinfo": {
                "text": "Message A"
            }, 
            "linkinfo": "something" 
        },
        {
            "sidmessage": "id_of_message_B",
            "usersid": "38jrc05h14avm14e",
            "messageinfo": {
                "text": "MessageB"
            }
        }
    ]
}

它完美地工作并返回更新后的文档以及整个数组中更新后的特定对象。

问题是我想使用投影仅使用更新的文档返回聊天数组。 我试过了

{ projection: { 'chat.$': 1 }, returnOriginal: false }

{ projection: { chat: chat.$ }, returnOriginal: false }

但是每次这种带有returnOriginal的投影returnOriginal返回 null。

例如预期文件

{
    "_id": "mongoid", 
    "chat": [
        {
            "sidmessage": "id_of_message_A",
            "usersid": "38jrc05h14avm14e",
            "messageinfo": {
                "text": "Message A"
            },
            "linkinfo": "something"
        }
    ],
}

笔记:

我正在使用的文档

我的 npm 版本是 6.4.0

我的 MongoDB 驱动程序版本是 3.1.4

在测试了多个案例后,我设法找到了答案。

我需要的是。

{
     projection: { 
          chat: { 
              $elemMatch: { sidmessage: new ObjectId(id_of_message_A) } 
          }
     }, 
     returnOriginal: false 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM