MongoDB:upsert子文档

MongoDB:upsert子文档

我有类似的文档,具有唯一索引bars.name

{ name: 'foo', bars: [ { name: 'qux', somefield: 1 } ] }

。我想更新子文档在哪里{ name: 'foo', 'bars.name': 'qux' }$set: { 'bars.$.somefield': 2 },或者用{ name: 'qux', somefield: 2 }under 创建一个新的子文档{ name: 'foo' }

是否可以使用带有upsert的单个查询来执行此操作,还是必须发出两个单独的查询?

相关:嵌入式文档中的“upsert”(建议更改模式以将子文档标识符作为键,但这是两年前的事情,我想知道现在是否有更好的解决方案。)


慕的地6264312
浏览 1307回答 3
3回答

子衿沉夜

如果您不介意稍微更改架构并具有如此结构:{ "name": "foo", "bars": { "qux": { "somefield": 1 },                            "xyz": { "somefield": 2 },                   }}您可以一次性执行操作。在嵌入式文档中重申“upsert”以确保完整性
打开App,查看更多内容
随时随地看视频慕课网APP