2016-01-23 103 views
-1

我是MongoDB/Mongoose的新手。我有一個用戶界限數組。我將如何查詢firstName:bob並更新pet [0]數組?MongoDB/Mongoose更新按元素編號的嵌入式陣列

閱讀示例時,查詢始終位於嵌入文檔數組本身上,因爲每個元素值在整個集合中都是唯一的。由於這不是我的情況,我需要查詢外部文檔(如firstName),然後通過元素編號更新元素。

例如:

UserModel.update(
    { firstName: "bob" }, 
    {'$set': {'pets.$. 
    //not going to work 

回答

1

你可以試試這個

UserModel.findOne({ firstName: "bob" }, function(err, user) { 
    user.pets[0] = // new pets is here. 
    user.save(function(err) {...}); 
+0

啊...謝謝。我不知道這很簡單。我想我必須使用'$ set' – dman

+1

@dman,如果您不知道數組中元素的位置,則使用位置'$'運算符。參考[this](https://docs.mongodb.org/manual/reference/operator/update/positional/)。 – zangw

+0

這會比update()更慢嗎,因爲它在更新之前返回整個文檔? – dman