MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb - Costruisci DBRef con string o ObjectId

L'unica differenza è che uno è in realtà un ObjectId e l'altro è una rappresentazione di stringa di quello che sembra essere un ObjectId .

DBRef come ObjectId:

db.persons.insert({name: 'cavin', 
     sister: new DBRef('persons', 
         new ObjectId('5165419064fada69cef33ea2'))}) // use an ObjectId

DBRef come stringa:

db.persons.insert({name: 'bob', 
     sister: new DBRef('persons', 
        '5165419064fada69cef33ea2')}) // use a string

Nell'esempio che hai incluso, ObjectId format potrebbe comportare un'archiviazione più efficiente in quanto è un valore di 12 byte invece dei 24 byte richiesti dalla rappresentazione della stringa. Se volevi usare DBRef s, userei un ObjectId se la raccolta di riferimento utilizza ObjectId s per il _id .

Non è necessario utilizzare un ObjectId in un DBRef . Può essere qualsiasi valore che rappresenti la chiave (_id ) della relativa raccolta/DB.

Come la documentazione suggerisce, a meno che tu non abbia un motivo convincente per utilizzare un DBRef , usa invece i riferimenti manuali.