gpt4 book ai didi

mongodb - 操作子文档

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

我有一个结构,我需要从子文档数组中添加或减去特定值,但是当我使用 $set 时,如果我没有明确设置值,所有其他属性都会被删除他们。我如何查询我需要的子文档并编辑属性值而使其他对象和属性保持不变?例子

{
title: 'james',
subby:[{id:1323313,total:10,name:'test'},
{id:2222222,total:10,name:'test2'}
]
}

在这个例子中,我想从名为“test”的子文档的总数中减去 1

最佳答案

您可以使用 positional operator查找具有 name: test 的数组元素,然后使用 $inc减去 1。尝试:

db.col.update({ title: "james", "subby.name": "test" }, { $inc: { "subby.$.total": -1 } })

您还可以使用 all positional修改所有子文档的运算符(MongoDB 3.6+):

db.col.update({ title: "james"}, { $inc: { "subby.$[].total": -1 } })

filtered positional operator修改选定的子文档(MongoDB 3.6+):

db.col.update({ title: "james" }, { $inc: { "subby.$[cond1].total": -1, "subby.$[cond2].total": -1 } }, { arrayFilters: [ { "cond1.name": "test" }, { "cond2.name": "test2" } ] })

关于mongodb - 操作子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52840261/

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