それぞれにサブドキュメントの配列が含まれているドキュメントのコレクションがあります。各サブ文書には時間値があります。サブ文書の時刻に基づいてサブ文書を返すことができるかどうかを確認しようとしています。配列内の値で配列値を1つ取り出すMongoDBクエリ
私は$ sliceを使ってサブ文書を取り出すことができますが、$ sliceは特定のインデックスまたは範囲とオフセットを与えます。
例時間!
ドキュメント私が見つけると、クエリを行う場合はそう....
{
id: 1234,
type: 'a',
subs: [
{ time: 123001, val: 'a' },
{ time: 123002, val: 'b' },
{ time: 123003, val: 'c' }
]
}
は似ています({}、{潜水艦:{$スライス:[2,1]}})私はバックのような何かを得ます:
{ id: 1234, type: 'a', subs: [{ time: 123002, val: 'b' }]}
たとえば、オフセットではなく123002の時間値に基づいて、そのレコードを取得したいと考えています。
可能ですか?
go!
Oh duhh!それはうまくいく。ありがとうございました。あなたが言っていることを誤解していない限り、ドキュメントの一部を返すことができます。http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fieldsスライスを使用しない配列の一部ではない。ありがとう! – FredArters
元の構造体を使用している場合は、 'subs.2 'を使って配列の3番目の要素を取得できます。しかし、一般的に、第3の項目が本当に何であるかは分かりません。配列の場合は、一般的にはすべてまたは何もありません。 –
質問は古いですが、これは回答を探している人にとって便利なことかもしれません。配列内の1つのドキュメントを$ elemMatchと照合することは可能です。 http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29#DotNotation%28ReachingintoObjects%29-Matchingwith%24elemMatch – Esteban