sql >> Databáze >  >> NoSQL >> MongoDB

Vytvořte _id na vnořených dokumentech na mongoimport --jsonArray

Ne.

Negenerovat ObjectId, ale můžete zahrnout ObjectId do JSON s následujícím zápisem:

{ "test" : { "$oid" : "5519e8ac996ef7f4636bfaec" } }

Tím by se vytvořilo pole nazvané test s hodnotou ObjectId("5519e8ac996ef7f4636bfaec") . Hodnota klíče $oid musí být platné ObjectId.

Ano, to je to, co budete potřebovat k vygenerování hodnot ObjectId. Můžete buď napsat malý skript pomocí např. ovladače Python, který provede import a vygeneruje ObjectId jako jeho součást, nebo použít mongoimport a poté naskenovat kolekci a aktualizovat každý vnořený dokument pomocí ObjectId:

> db.test.find()
{ "_id" : ObjectId("5519e8ac996ef7f4636bfaec"), "a" : [ { "x" : 1 }, { "y" : 2 } ] } 
> db.test.find().forEach(function(doc) {
    for (var i = 0; i < doc.a.length; i++) {
        doc.a[i]._id = ObjectId()
    }
    db.test.update({ "_id" : doc._id }, doc)
} )

Všimněte si, že pokud neexistuje nějaký konkrétní důvod mít _id/ObjectId ve vnořeném dokumentu, jako je _id je odkaz na jiný dokument, není nutné ani žádoucí uvádět ObjectId na každý vnořený dokument.




  1. Jak kódovat pomocí Spring data MongoDB pro db.test.update({name:'abc'}, {$pull:{'child':{'age':10}}})

  2. Replikace operační databáze Cloudera v kostce

  3. Začínáme s operační databází Cloudera Data Platform (COD)

  4. Agregace MongoDB - hodnoty polí projektu jako pole