Bir toplama sorgusunda onaltılı bir dizeyi eşdeğer ObjectID'ye dönüştürmeye çalışıyorum. aşağıdaki yöntemlerden birini kullanarakMongoDB aggregation proje dizesi ObjectId
db.omvas.aggregate([
{$project:{
EID:{$let: {
vars: {
id: "$EID"
},
in: ObjectId("$$id")
}},
}
},
{$group:{
_id:"$EID"
}
}
]);
ve
db.omvas.aggregate([
{$project:{
EID: ObjectId("$EID")
}
},
{$group:{
_id:"$EID"
}
}
]);
ben hata almaya devam "uzunluk hatası::: geçersiz nesne kimliği" Ben iki farklı yöntem denedi. Toplama değişkeni yerine bir harf dizisi eklemeyi test ettim ve doğru bir ObjectID ile sonuç aldım. Dize değeri Mongo'nun ObjectId işlevine geçirilmiyor gibi görünüyor, ancak değişken adı bir değişmez dize olarak iletiliyor.
Neyi başarmaya çalışıyorum, bunun mümkün olup olmadığı hakkında bir fikriniz var mı? Eksik olduğum bir sihir var mı?
Teşekkürler, bu mükemmel bir anlam ifade ediyor. Bu belirli sorgu, raporlama iş akışında yalnızca bir aşamadır. ObjectId, boru hattından aşağıya doğru yapılan sorgulamalar tarafından kullanıldığı için gerekliydi. Şimdi nasıl çalıştıklarını tekrar gözden geçiriyorum ve bunları yürütmenin daha iyi bir yolunun olduğunu düşünüyorum. – StevenWarren
Benim durumumda, yerel alanın bir "ObjectId" dizgesini temsil ettiği ve yabancı alanın gerçek bir ObjectId olduğu bir '$ lookup 'yapmak istiyorum. Bu mümkünse herhangi bir fikir w/MongoDB 3.2? – Madbreaks
Bunun bir yolu, koleksiyondaki belgelere ObjectId olarak kimliği içeren yeni bir alan ekleyen bir komut dosyası yazmak olacaktır. Ardından yeni alanı kullanarak $ lookup yapın. –