MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Utwórz _id na poddokumentach w mongoimport --jsonArray

Nie.

Nie generować ObjectId, ale możesz dołączyć ObjectId do JSON z następującą notacją:

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

Spowoduje to utworzenie pola o nazwie test o wartości ObjectId("5519e8ac996ef7f4636bfaec") . Wartość klucza $oid musi być prawidłowym identyfikatorem obiektu.

Tak, właśnie tego potrzebujesz, aby wygenerować wartości ObjectId. Możesz albo napisać mały skrypt, używając np. sterownika Pythona, aby wykonać import i wygenerować ObjectId jako jego część, lub użyć mongoimport, a następnie przeskanować kolekcję i zaktualizować każdy poddokument za 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)
} )

Zwróć uwagę, że o ile nie ma konkretnego powodu, aby mieć _id/ObjectId w poddokumencie, na przykład _id jest odniesieniem do innego dokumentu, nie jest konieczne ani pożądane umieszczanie identyfikatora ObjectId na każdym poddokumencie.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB — maksymalny rozmiar pliku przy użyciu GridFS

  2. Agregacja Mongo:podział wartości na grupy

  3. Połączenie z nieistniejącym serwerem mongodb nie zgłasza wyjątku

  4. Nie można połączyć się z MongoDB

  5. Automatyczne inkrementowanie w MongoDB w celu przechowywania sekwencji unikalnego identyfikatora użytkownika