Her biri bir alt belge dizisi içeren bir belge koleksiyonum var. Her alt belgenin bir zaman değeri vardır. Alt belgede geçen süreye bağlı olarak bir alt belgeyi iade edip edemeyeceğimi görmeye çalışıyorum.MongoDB sorgusu dizideki bir değere göre bir dizi değeri almak için
ben $ dilim kullanarak bir alt belgeyi alabilir biliyorum, ama $ dilim bana sadece belirli bir dizin veya aralığı ve ofset verir.
Örnek zaman! Ben böyle bir şey geri almak
Belgeler Ben Bul ile bir sorgu yaparsanız ({}, {: {$ dilim [2,1]} subs})
{
id: 1234,
type: 'a',
subs: [
{ time: 123001, val: 'a' },
{ time: 123002, val: 'b' },
{ time: 123003, val: 'c' }
]
}
.... öylesine gibidir :
{ id: 1234, type: 'a', subs: [{ time: 123002, val: 'b' }]}
Ben 123.002 zaman değerine dayalı ofset değil tabanlı örneğin söz konusu kaydı almak istiyorum, ama.
Mümkün mü?
Verileri tasarladık gibi
Oh duhh! Evet, işe yarayacak. Teşekkür ederim. Söylediklerimi yanlış anlamadığım sürece, bir belgenin bir parçasını döndürebilirsiniz .. http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields Dilimi kullanmadan sadece bir dizinin parçası değil . Teşekkürler! – FredArters
Özgün yapınızı kullanırsanız, dizide üçüncü öğeyi almak için "alt.2" yi kullanabilirsiniz. Ama genellikle üçüncü maddenin gerçekte ne olduğunu bilmiyorsunuz. Yani diziler için, genellikle ya hep ya hiç. –
Soru eskidir, ancak belki bu bir cevap arayan biri için yararlıdır. Dizideki bir belgeyi $ elemMatch ile eşleştirmek mümkündür. http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29#DotNotation%28ReachingintoObjects%29-Matchingwith%24elemMatch – Esteban