2016-04-11 2 views
0

Ich versuche, ein Dokument mit der Einfügung() einzufügen. Das Dokument verfügt über ein Schlüsselfeld mit dem Namen "Vorfahren" mit einem Wert als Array von IDs. Dieser Code ist wie folgt;Einfügen eines Dokuments, in dem der Wert eines Schlüssels eine Array-Variable ist

var ids = []; 
var fid = db.facultis.find({fname: "Sciences"})._id; 
ids.push (fid); 
var did = db.departs.find({dname: "Chemistry"})._id; 
ids.push (did); 
db.programs.insert({ prgname: "B.Sc. Pure Chemistry", ancestors:ids}) 

Wenn der Code auf MONGO Shell ausgeführt und find() Methode zeigt es das folgende Dokument.

{ 
     "_id" : ObjectId("570b8380d63a4e26124c8c36"), 
     "prgname" : "B.Sc. Pure Chemistry", 
     "ancestors" : [ 
      null, 
      null 
     ], 
     "duration" : 4, 
    )" 

Warum sind die Werte des Feldes "Ahnen" alle null?

Antwort

0

Die Elemente dieses Feldes sind null, weil Sie die falsche Methode verwenden, um die _id Werte zu erhalten; Sie verwenden find(), die einen Cursor auf die ausgewählten Dokumente in der Auflistung zurückgibt, nicht das eigentliche Dokument daher, wenn Sie versuchen, auf die _id Eigenschaft eines Cursor-Objekts zuzugreifen, gibt es null zurück.

Sie höchstwahrscheinlich die findOne() Methode verwenden möchten, die ein einzelnes Dokument zurückgibt, die die angegebenen Abfragekriterien erfüllt, so können Sie das _id Feld erhalten:

var ids = []; 
var fid = db.facultis.findOne({fname: "Sciences"})._id; 
ids.push (fid); 
var did = db.departs.findOne({dname: "Chemistry"})._id; 
ids.push (did); 
db.programs.insert({ prgname: "B.Sc. Pure Chemistry", ancestors: ids})