gpt4 book ai didi

mongodb - 通过 MongoDB 中的索引在数组中的子文档中插入一个字段

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

我有以下 MongoDB 结构

{
_id : ...,
other_stuff ... ,
my_array : [
{ title: ...., body: ...., email: .... },
{ title: ...., body: ...., email: .... },
{ title: ...., body: ...., email: .... }
]
}

我需要在“my_array”字段的子文档中更新/或插入(如果不存在)一个名为“click_number”的字段。如果“click_number”字段不存在,则插入该字段并设置为1;如果存在,则将其递增 1。

首先,我不知道如何通过其索引更新数组元素,其次,我不知道如何根据字段的存在进行更新或插入。感谢您的帮助

最佳答案

您想对您的收藏使用更新命令,如下(示例):

db.collection.update(
{ "my_array.title" : "title_one" },
{ $inc : { "my_array.$.click_number" : 1 } }
);

刚刚发生了什么?

update 的第一个参数上,您定义一个 query 来匹配您希望更新的文档。我们在名为 my_array 的数组中搜索名为 title 的属性。您当然可以通过将点符号修改为:"my_array.email" 来匹配 bodyemail

第二个参数定义更新,应用的修改。我们有一个 $inc 运算符来增加我们在这个语句中使用的字段。 query 选择具有匹配数组元素的文档。您可以使用 $ 表示法获取此匹配的数组项。 "my_array.$" 选择匹配的数组元素,它有一个titleemailbody。如果您尝试为不存在的字段赋值,MongoDB 会为您完成。如果该字段不存在,$inc 将该字段设置为指定的金额。 $inc 运算符接受正增量和负增量。

Learn more about the update command.

另一个例子:

db.collection.update(
{ _id : "john", "my_array.email" : "email" },
{ $inc : { "my_array.$.click_number" : 1 } }
);

关于mongodb - 通过 MongoDB 中的索引在数组中的子文档中插入一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18929112/

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