2016-04-11 14 views
0

dizi değişkeni olduğu bir belge ekleme insert() kullanarak bir belge eklemeye çalışıyorum. Belgede, bir dizi kimlik olarak değeri olan atalar olarak adlandırılan bir anahtar alan vardır. Bu kodlar şöyledir;Bir anahtarın değeri

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}) 
MONGO kabuk üzerindeki kod çalıştırmasına

ve find() yöntemi şu dokümanı görüntüler.

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

"Atalar" alanının değerleri neden boş?

cevap

0

_id değerlerini almak için yanlış yöntemi kullandığınız için bu alanın öğeleri boştur; find() kullanarak, bir imleç nesnesinin _id özelliğine erişmeye çalıştığınızda, gerçek belgeyi değil, belgede seçilen belgelere bir imleç döndürür, bu, null değerini döndürür.

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}) 
:

En büyük olasılıkla belirtilen sorgu ölçütlerini karşılayan tek bir belge verir findOne() yöntemi kullanmak isteyen

, böylece _id alanını alabilirsiniz

İlgili konular