-1

次のようなデータがあります。

{
   "_id": ObjectId("4fc3abc9751c38c811000002"),
   "timeStamp": ISODate("2012-05-28T16: 45: 58.0Z"),
   "loadTime": 2.3101460933685,
   "description": {
     "0": {
       "level": NumberInt(0),
       "description": "Some description"
    }
  },

以下のクエリのように、0 ~ 8 の配列を使用して「レベル」データを find() するにはどうすればよいですか?

私のクエリは次のようになります。

find(Array ( [description] => Array ( [0] => Array ( [level] => Array ( [$in] => Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 ) ) ) ) ) )
4

1 に答える 1

3

これでうまくいくはずです:

->find( array( 'description.0.level' => array( '$in' => range( 0, 8 ) ) ) );

ただし、なぜそこに「0」キーがあるのか​​よくわかりません。ドキュメントは実際には次のようになります。

{
  "_id": ObjectId("4fc3abc9751c38c811000002"),
  "timeStamp": ISODate("2012-05-28T16: 45: 58.0Z"),
  "loadTime": 2.3101460933685,
  "description": [
    {
      "level": 0,
      "description": "Some description"
    }
  ],
}

その場合、次のような「レベル」を見つけることができます。

->find( array( 'description.level' => array( '$in' => range( 0, 8 ) ) ) );
于 2012-05-28T19:58:05.547 に答える