MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

एक ही दस्तावेज़ में एक सरणी से दूसरे में आईडी द्वारा वस्तु को परमाणु रूप से स्थानांतरित करें

यहां एक उदाहरण दिया गया है:

> db.baz.find()
> db.baz.insert({
...   "_id": ObjectId("4d525ab2924f0000000022ad"),
...   "arrayField": [
...     { id: 1, other: 23 },
...     { id: 2, other: 21 },
...     { id: 0, other: 235 },
...     { id: 3, other: 765 }
...   ],
...   "someOtherArrayField": []
... })
WriteResult({ "nInserted" : 1 })

function extractIdZero(arrayFieldName) {
    return {$arrayElemAt: [
        {$filter: {input: arrayFieldName, cond: {$eq: ["$$this.id", 0]}}}, 
        0
    ]};
}

extractIdZero("$arrayField")
{
    "$arrayElemAt" : [
        {
            "$filter" : {
                "input" : "$arrayField",
                "cond" : {
                    "$eq" : [
                        "$$this.id",
                        0
                    ]
                }
            }
        },
        0
    ]
}

db.baz.updateOne(
    {_id: ObjectId("4d525ab2924f0000000022ad")},
    [{$set: {
         arrayField: {$filter: {
             input: "$arrayField",
             cond: {$ne: ["$$this.id", 0]}
         }},
         someOtherArrayField: {$concatArrays: [
             "$someOtherArrayField",
             [extractIdZero("$arrayField")]
         ]}
     }}
    ])
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.baz.findOne()
{
    "_id" : ObjectId("4d525ab2924f0000000022ad"),
    "arrayField" : [
        {
            "id" : 1,
            "other" : 23
        },
        {
            "id" : 2,
            "other" : 21
        },
        {
            "id" : 3,
            "other" : 765
        }
    ],
    "someOtherArrayField" : [
        {
            "id" : 0,
            "other" : 235
        }
    ]
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoDB ISODate को mongoDB में स्ट्रिंग में कैसे बदलें?

  2. नेवला:रेप्लिकासेट पर पढ़ें

  3. मैं सरणी से उप-दस्तावेज़ कैसे खींच सकता हूं?

  4. स्कीमा से MongoDB कम्पास में 20 से अधिक नवीनतम दस्तावेज़ देखें

  5. एक्सप्रेसज, मोंगोडब साइट के लिए छवियों को स्टोर करने का सबसे अच्छा तरीका कौन सा है?