gpt4 book ai didi

node.js - 添加到嵌入文档 : to dot, 或不添加到点

转载 作者:太空宇宙 更新时间:2023-11-04 02:18:29 24 4
gpt4 key购买 nike

工具:mongodb:2.1.3(Node.js 驱动)

目标:

我今天要学习的是如何使用 native Node.js 驱动程序向 Mongodb 中的嵌套对象添加新属性。

问题 - 点还是不点,这就是问题:

到目前为止,用 Mongodb 术语来说,听起来我正在尝试“add to an embedded document”。

在上面链接的示例中,用户希望通过添加新“字段”来更新occurrences(即将 {12:3} 添加到occurrences)

{
"id" : 1,
"occurrences" : {
"1" : 1,
"2" : 5,
"17" : 1,
"35" : 4
}
}

最流行的答案是执行以下操作(我认为“findOneAndUpdate”最近已被取代)

db.collection.update(
{_id:ObjectId("1")},
{ $set: { "occurrences.12": "3" }
});

小注释 - 为了简单起见,我删除了答案中的其他原子更新。

问题:

这个非点解决方案是否是一个同等的替代方案?或者按照下面的方式这样做会是错误的、不同的或有任何其他潜在的后果吗?

db.collection.findOneAndUpdate(
{_id:ObjectId("1")},
{ $set: { "occurrences": {"12:3"}}
});

注意:我使用 findOneAndUpdate 因为它似乎是当前的等效项。

最佳答案

像使用 JavaScript 对象一样思考:

let occurrences = {1: 2, 3: 4, 5: 6};
// add new property
occurrences[12] = 3;

// clobber object
occurrences = {12: 3};

另请注意 that you may not want to embed documents at all取决于您想要如何构建数据。有时您可能想要正常化......但有时您却不想。

<小时/>

请注意,您还可以将 updateOne 与 native 驱动程序一起使用。

关于node.js - 添加到嵌入文档 : to dot, 或不添加到点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34665734/

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