2016-11-12 86 views
0

nodejs mongodb驅動程序的文檔update函數說第二個參數是「update document」,但沒有描述其中的一個是什麼。如何使用`update`將新元素推入mongo文檔中的數組?

它們顯示瞭如何使用本文檔中設定根節點值的示例:

var r = yield col.updateOne({a:1}, {$set: {b: 1}});

此設置與item.a===1文檔的item.b爲1

.. 。但是我不能從這裏推斷,看看如何添加一個元素到一個葉子的數組中(不在像上面的b這樣的項目的根部)

這可能是

col.updateOne({a:1}, {$push: {sub_node: {the_list: 1}}});

col.updateOne({a:1}, {sub_Node: {this_list: {$push: 1}});

...有什麼實際的方法是什麼?


和(側面問題)這是在哪裏記錄的?我們如何知道如何做到這一點?

回答

0

在nodejd mongodb驅動程序參考中,似乎沒有關於nodejs mongodb驅動程序如何實現update文檔的信息。

它似乎也是本地(mongo)實現工作。這記錄在here

訪問嵌套的文檔元素是使用「點號」

theDb.collection('projects').updateOne({id: projectId}, {$push: {"contract.variations": variationId}}) 

這是直觀的react開發商,其中immutability-helper有一個update看起來看似相似的完成,但使用嵌套對象語法。可憐!

1

可以使用兩個操作符 1)$推

col.updateOne({a:1}, {$push: {sub_node: {the_list: 1}}}) 

這將推動the_list變量sub_node對象陣列對象內部

2)$ addToSet:

col.updateOne({a:1}, {$addToSet: {sub_node: {the_list: 1}}}) 

這也會執行與$ push相同的操作,但它會避免重複輸入子節點數組 您可以看到mongodb文檔

+0

謝謝!當然,這似乎正是我需要的。這些操作員在哪裏記錄? – GreenAsJade

+0

我在mongo(不是nodejs mongodb)文檔中找到了doco,在這裏:https://docs.mongodb.com/manual/reference/operator/update/ – GreenAsJade

+0

原來這個答案是錯誤的。 「[要在嵌入式文檔或數組中指定'field',請使用點符號](https://docs.mongodb。COM /手動/參考/操作員/更新/推/#up._S_push)」 – GreenAsJade

相關問題