【问题标题】:Can't update array in Mongo无法在 Mongo 中更新数组
【发布时间】:2012-10-18 03:53:34
【问题描述】:

© 根据 ID 查找特定书籍。但我无法更新该集合所有者数组。 该数组已经有一些值,但我想用下面的新值更新它。

 Book.find({_id: "5423"},function(err,usr){
    usr[0].update($set:{owner:["123","145"]});

【问题讨论】:

    标签: mongodb express mongoose


    【解决方案1】:

    答案在official documentation 中给出。这是一个可以在 Mongo shell 中执行的示例:

    b1 = { 'name' : 'Introduction to MongoDB', owners : [1, 10] }
    b2 = { 'name' : 'SQL for Dummies', owners : [5] }
    
    db.Books.save(b1)
    db.Books.save(b2)
    
    book = db.Books.find().next() // just picking first available book
    db.Books.update({ _id : book._id }, { $pushAll : { owner : [123, 145]} })
    

    请注意,MongoDB 不会返回您和更新的文档(同样,这就是 DB 的设计方式和工作方式)。

    【讨论】:

    • 您想在此处使用$pushAll 而不是$push,否则数组本身将作为一个新元素推送到owner 数组中。
    • 感谢 JohnyHK 更新。
    • @BasicWolf 当我执行 res.json(usr) 时,json 返回过去的值。我是不是语法错误?
    • usrfind() 的结果。由于 MongoDB 的异步特性,它不会在此范围内更改。我建议您阅读一些有关 MongoDB 的通用文档,以了解它的工作原理以及最佳实践。
    猜你喜欢
    • 1970-01-01
    • 2015-07-17
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多