Mongodb 操纵子文档

Mongodb 操纵子文档,mongodb,mongoose,Mongodb,Mongoose,我有一个需要从子文档数组中添加或减去特定值的结构,但是当我使用$set时,如果我没有显式设置值,则所有其他属性都会被删除。如何查询所需的子文档并编辑属性值,而保持其他对象和属性不变? 范例 在本例中,我想从名为“test”的子文档的总数中减去1您可以使用它查找名为的数组元素:test,然后使用它减去1。尝试: db.col.update({ title: "james", "subby.name": "test" }, { $inc: { "subby.$.total": -1 } }) 您还

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

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

您可以使用它查找名为
的数组元素:test
,然后使用它减去
1
。尝试:

db.col.update({ title: "james", "subby.name": "test" }, { $inc: { "subby.$.total": -1 } })
您还可以使用运算符修改所有子文档(MongoDB 3.6+):

以及修改所选子文档(MongoDB 3.6+):


谢谢你,为我指明了正确的方向。使用子文档可能有点棘手。这对一系列项目有效吗?假设我想以不同的数量增加两个子文档,这种情况下是否有效?@kabuto178表示多个子文档-docs@kabuto178修改我的answer@mickl这正是我想要的,谢谢你的指导
db.col.update({ title: "james", "subby.name": "test" }, { $inc: { "subby.$.total": -1 } })
db.col.update({ title: "james"}, { $inc: { "subby.$[].total": -1 } })
db.col.update({ title: "james" }, { $inc: { "subby.$[cond1].total": -1, "subby.$[cond2].total": -1 } }, { arrayFilters: [ { "cond1.name": "test" }, { "cond2.name": "test2" } ] })