2

私はmongoドキュメントを持っています:

{
    id:1
    time:[
        1,
        2,
        10
    ]
}
{
    id:2
    time:[
        1,
        4,
        8,
        10
]
}

時間が 3 から 5 の間、または 7 から 9 の間のすべてのドキュメントを検索したい (ID 2 のドキュメント)。これを行う方法がわかりません。

私は試します:

mongo.find( $or : [{time:{$gte:3, $lte:5}}, {time:{$gte:7, $lte:9}}] )

mongo は id 1 と 2 のドキュメントを返しますが、id2 と time[4, 8] が必要です。

配列全体ではなく、配列の各要素に条件を適用する方法は?

ps サイズ配列「時間」は異なる場合があります

4

2 に答える 2

3

'time' 配列を別のストレージ配列のプレースホルダーとして使用している場合は、前の elemMatch のコメントが役立ちます。これは、試験の点数などの他の数値検索に対処する必要があるためです。

ただし、日付/時刻などの処理に使用している場合は、整数を介して実行され、mongodb での検索と保存が非常に簡単であり、サポートが簡単に得られるため、ストレージに UNIX タイムスタンプを使用する方がよい場合があります。そこにあるプログラミング言語の大部分。(php の例: mktime() および DateTime::getTimestamp())。

于 2013-08-01T11:39:43.203 に答える