【发布时间】:2012-10-18 03:53:34
【问题描述】:
© 根据 ID 查找特定书籍。但我无法更新该集合所有者数组。 该数组已经有一些值,但我想用下面的新值更新它。
Book.find({_id: "5423"},function(err,usr){
usr[0].update($set:{owner:["123","145"]});
【问题讨论】:
© 根据 ID 查找特定书籍。但我无法更新该集合所有者数组。 该数组已经有一些值,但我想用下面的新值更新它。
Book.find({_id: "5423"},function(err,usr){
usr[0].update($set:{owner:["123","145"]});
【问题讨论】:
答案在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 数组中。
usr 是find() 的结果。由于 MongoDB 的异步特性,它不会在此范围内更改。我建议您阅读一些有关 MongoDB 的通用文档,以了解它的工作原理以及最佳实践。