mongodb - 如果没有包含数组的相应查询字段,则无法应用位置运算符

标签 mongodb mongodb-query

我有以下文件:

{ "id" : "1",
"name": "Paul",
"a": { "b" : [{"name" : "laura", "lastname" : "Palmer"}]}
}

现在我想更新 b 中的每个姓氏。

我试过这个:

    db.organizations.update({"name" : "Paul", "a.b" : {$exists: true}},
{ "$set" : {"a.b.$.lastname" : "no_lastname"}});

但是我得到: 如果没有包含数组的相应查询字段,则无法应用位置运算符。

有人知道我应该做什么吗?

最佳答案

您可以使用 cursor.forEach() mongo shell 中的游标方法来实现这一点:

db.organizations.find({"name" : "Paul", "a.b" : {$exists: true}}).forEach(function(doc) {
    array = doc.a.b; 
    array.forEach(function(elem) {
        elem.lastname="no_lastname"
    }); 
    db.organizations.update({_id:doc._id}, {$set:{"a.b":array}}); 
})

关于mongodb - 如果没有包含数组的相应查询字段,则无法应用位置运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064685/

相关文章:

mongodb - 不坚持 Scala None's 而不是坚持为空值

Mongodb 无法启动 -> 显示奇怪的错误日志

c# - 如何使用 Moq 模拟 IMongoCollection.Find

MongoDB 聚合 $lookup 到作为索引数组的字段

mongodb-query - 如何将Mongodb js返回值返回给shell脚本

linux - MongoDB 和无法识别的选项 '--enableEncryption'

java - mongodb-java-driver 3.2 无法使用运行时进行 mongoexport

mongodb - 使用聚合的 $lt 100 的 $sum

文档不在数组中的mongodb默认值

node.js - MongoError : attempt to write outside buffer bounds