{
"_id":ObjectId("570404d3b4aefafb2d975e49"),
"timeStamp":NumberLong(1459881168860),
"activityMessages":null,
"oldLocation":null,
"changeType":"ContainerCreated",
"userId":"naveen",
"newLocation":"L1-500",
"itemHistory":[
{
"userId":null,
"timeStamp":null,
"oldLocation":null,
"newLocation":null,
"changeType":"ItemAdded",
"activityMessages":null,
"itemNumber":325136,
"purchCompanyId":1003,
"poNum":"100",
"oldQty":NumberLong(0),
"newQty":NumberLong(100),
"inventoryStatus":"Received"
},
{
"userId":null,
"timeStamp":null,
"oldLocation":null,
"newLocation":null,
"changeType":"ItemAdded",
"activityMessages":null,
"itemNumber":325136,
"purchCompanyId":1003,
"poNum":"100",
"oldQty":NumberLong(0),
"newQty":NumberLong(2000),
"inventoryStatus":"Frozen"
},
{
"userId":null,
"timeStamp":null,
"oldLocation":null,
"newLocation":null,
"changeType":"ItemAdded",
"activityMessages":null,
"itemNumber":88888,
"purchCompanyId":1003,
"poNum":"101",
"oldQty":NumberLong(0),
"newQty":NumberLong(200),
"inventoryStatus":"Claims"
}
}
Bu, normal Mongo belgesimdir. sorgusu ile verilen bir zaman damgası aralığında belirli bir öğe numarası için sorgulama Açık:Bir belge içinde dizi için doğru mongo sonucunu bulamıyor
{ "timeStamp" : { "$gte" : 0 , "$lte" : 1459933945543} , "itemHistory.itemNumber" : 325136}
Doğru yanıtı alıyorum! Ancak itemNumber 88888 için arama yaparken aynı sorgu için yanıt alamıyorum.
{ "timeStamp" : { "$gte" : 0 , "$lte" : 1459933945543} , "itemHistory.itemNumber" : 88888}
şu sorgu sadece çalışıyor:
{ "timeStamp" : { "$gte" : 0 , "$lte" : 1459933945543} , "itemHistory" : {"$elemMatch":{"itemNumber":112}}}
Yanıt:
Fetched 0 records
Bu belgenin içindeki dizinin sadece ilk eleman aldı olup olmadığını merak beni yapmıştır sorgu koşullarını eşleştirirken. Bir sürü başka soruyu denedim, hiçbir şey işe yaramıyor gibi görünüyor.
Verilen itemNumber! Öğesini içeren iade edilecek belgenin tamamına ihtiyacım var!
TIA
Bu gerçek kodunda bir garanti yazım hatası olduğunu. Tekrar kontrol et. Bu bir hata ya da bunun gibi bir şey değil. Sadece bir alan adı veya koleksiyonu veya yanlış bir şey yazmış olacaksınız. Çoğaltamıyor. Burada verilen ikinci sorgu, belgenin olması gerektiği gibi eşleşir. –
{"timeStamp": {"$ gte": 0, "$ lte": 1459933945543}, "itemHistory": {"$ elemMatch": {"itemNumber": 112}}} bu sorgu çalışır. Yazım hatası yok. – Tanvi
'{" timeStamp ": {" $ gte ": 0," $ lte ": 1459933945543}," itemHistory.itemNumber ": 88888}', bu soruda sunduğunuz veriler üzerinde mükemmel çalışır. Biliyorum, çünkü belgeyi bir koleksiyona kopyaladım ve sorguyu çalıştırdım. Bir dizideki özelliklerde "iki veya daha fazla koşulu" eşleştirmeniz gerektiğinde, yalnızca ** hiç ** elemMatch'e ihtiyacınız var. Bu kullanım ve başka bir şey değil. –