gpt4 book ai didi

javascript - NodeJS MongoDB 投影不工作

转载 作者:可可西里 更新时间:2023-11-01 10:38:23 26 4
gpt4 key购买 nike

我使用以下代码在 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 的投影都会返回 null。

例如预期文件

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

注意事项:

documentation我正在使用。

我的 npm 版本是 6.4.0

我的MongoDB驱动版本是3.1.4

最佳答案

经过多次测试,我终于找到了答案。

我需要的是。

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

关于javascript - NodeJS MongoDB 投影不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52053003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com