MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Създайте _id на поддокументи на mongoimport --jsonArray

Не.

Не за генериране на ObjectId, но можете да включите ObjectId в JSON със следната нотация:

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

Това ще създаде поле, наречено test със стойност ObjectId("5519e8ac996ef7f4636bfaec") . Стойността на ключа $oid трябва да е валиден ObjectId.

Да, това е, което ще ви трябва, за да генерирате стойностите на ObjectId. Можете или да напишете малък скрипт, използвайки, например, драйвера на Python, за да извършите импортирането и да генерирате ObjectId като част от него, или да използвате mongoimport и след това да сканирате колекцията и да актуализирате всеки поддокумент с 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)
} )

Имайте предвид, че освен ако няма конкретна причина да имате _id/ObjectId в поддокумент, като _id е препратка към друг документ, не е нито необходимо, нито желателно да се поставя ObjectId на всеки поддокумент.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Метакласът не е инстанция

  2. Groupby в MongoTemplate връща празни полета

  3. $match в $lookup резултат

  4. Как да получите обект Node, когато използвате Neo4j jdbc?

  5. Spring Data - MongoDB индексиране DBRef