Mongodb

插入對像數組MongoDB問問題

  • December 25, 2017

我有

{
   "_id" : ObjectId("5a25af80d2c4dd065991dccc"),
   "username" : "abc@gmail.com",
   "password" : "$2a$10$ptFyLKtyyrL5gMYdXS6wV.HLUA4Py5iudMJDldf5qsHFS4.9TPCyy",
   "role" : "Admin",
   "__v" : 0,
   "list" : [ 
       {
           "name" : "We",
           "arr" : [ 
               "5a26d554677475818a795f75", 
               "5a395bb0976d5304c07f7dd4"
           ]
       }, 
       {
           "name" : "sandeep",
           "arr" : [ 
               "5a26d554677475818a795f75"
           ]
       }
   ]
}

我想在 list.arr 中添加一個元素,其中 name = ‘we’ 並且僅在該元素不存在時添加

我如何執行此查詢。

由於 MongoDB BOL $position MongoDB 3.6為美元選項($position Operator)添加了功能,指示推送操作在數組末尾插入元素。

注意: $position 運算符MongoDB 3.6.0. 通過它可以set插入元素在array.

讓我們從頭開始,這裡我想給你看。如何在 MongoDB 中插入元素。除了 MongoDB,我還提供了簡單的範例,Pyhon以便您更好地理解。

假設在 Python 中我們有array4 個values類似的對象

$$ 0,1,2,3 $$ Python 程式碼範例

Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> array = [1,2,3,4]
>>> array[-1]
4
>>> array.insert(-1,5)
>>> array
[1, 2, 3, 5, 4]
>>> 

這是看到數組時的 Python 範例

$$ -1 $$. 它將顯示 4。我想5在數組中的最後一個元素之前插入數字。正如您在 Python 中看到的那樣。插入程式碼後array.insert(-1,5),數組元素為array [1,2,3,5,4]. 同樣,我想將範例數組元素插入MongoDB.

position首先,我在我的 MongoDB 數據庫中創建了集合。然後插入arraywith4 document值。正如你在下面看到的

MongoDB 程式碼範例

> db.createCollection("position")
{ "ok" : 1 }
> db.position.insert({array : [1,2,3,4]})
WriteResult({ "nInserted" : 1 })
> db.position.findOne()
{
       "_id" : ObjectId("5a40c6288367f8d601e1e513"),
       "array" : [
               1,
               2,
               3,
               4
       ]
}
> db.position.update({},
... {$push : {array : {$each: [5], $position: -1 }}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.position.findOne()
{
       "_id" : ObjectId("5a40c6288367f8d601e1e513"),
       "array" : [
               1,
               2,
               3,
               5,
               4
       ]
}
>

**注意:**請記住,如果push沒有dollar position指定值,則已經將值附加到數組的末尾。

對於美元位置的負值,我有更多選項可以在數組中插入值的位置。如果美元位置指定的負整數的絕對值大於然後推送將對象插入到數組的開頭.

這裡我給出了Pythonwith的例子MongoDB

希望這對您有所幫助。

進一步參考數組更新運算符

引用自:https://dba.stackexchange.com/questions/193920