gpt4 book ai didi

mongodb - $elem匹配和更新

转载 作者:可可西里 更新时间:2023-11-01 09:56:34 28 4
gpt4 key购买 nike

我想更新使用 $elemMatch 获取的子文档。我在网上找到了一些帖子,但到目前为止我无法让它发挥作用。这是我的:

架构:

var user = {
_id: ObjectId
addresses: [{
_id: ObjectId
street: String
}]
};

代码:

this.findOne({
'addresses._id': address_id
}, { 'occurrences': { $elemMatch: {
'_id': address_id
}}})
.exec(function(err, doc) {
if (doc) {
// Update the sub doc
doc.addresses[0].street = 'Blah';

doc.update({ 'addresses': { $elemMatch: { '_id': address_id }}}, { $set: {"addresses.$.street": doc.addresses[0].street }})
.exec(function(err, count) {
...

上面的结果导致地址子文档被删除并重新创建一个空白的新文档。如何保存文档/子文档?

我的目标是能够通过子文档(地址)ID 获取文档(用户),修改一个匹配的地址然后保存它。

最佳答案

您可以通过对模型调用一次 update 来完成这一切,而不是先使用 findOne 获取它:

User.update(
{'addresses._id': address_id},
{$set: {'addresses.$.street': 'Blah'}},
function(err, count) { ... });

这使用了 positional $ operator$set 中仅定位查询中匹配的 addresses 元素。

关于mongodb - $elem匹配和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25577029/

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