【问题标题】:Unable to find array element using $ operator in mongoDB在 mongoDB 中使用 $ 运算符无法找到数组元素
【发布时间】:2015-09-07 17:05:37
【问题描述】:

我在 mongoDB 中有一个看起来像这样的文档

{ "_id" : ObjectId("55edbc999113b823360aa912"), "car" : "本田", “颜色”:[“黑色”、“白色”] }

我正在尝试使用此查询将数组字段“颜色”中的黑色更新为灰色

db.words.update({_id:'55edbc999113b823360aa912', color:Black},{$set:{'color.$' : 'Grey' } } )

但是我得到了这个错误。

2015-09-07T12:38:14.259-0400 ReferenceError:黑色未定义

如果我尝试在黑色周围使用逗号,仍然没有找到

db.words.update({_id:'55edbc999113b823360aa912', color:'Black'},{$set:{'color.$' : 'Grey' } } )

WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 })

更新查询出了什么问题?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    您忘记指定 _id 字段是 ObjectId,而不是字符串:

    db.words.update(
        { _id: ObjectId('55edbc999113b823360aa912'), color: 'Black' },
        { $set: { 'color.$' : 'Grey' } }
    )
    

    您确实需要 'Black' 周围的引号,因此第二个查询更接近,只是缺少 ObjectId()

    【讨论】:

    • 我仍然得到相同的结果 - WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 })
    • 现在可以使用了。我写错了文件。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 2020-09-27
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多