0

私は計画を持っています

{ 
   "_id" : ObjectId("50ec1d93ba02ece1979ee4a5"), 
   "url" : "google.com" 
   "results" : [ 
      { "1357651347" : { "data1" : "a", "data2" : "b", "data3" : "c" }},
      { "1357651706" : { "data1" : "d", "data2" : "e", "data3" : "f" }},
      { "1357651772" : { "data1" : "g", "data2" : "h", "data3" : "i" }} 
    ]
}

idの結果に興味があります1357651706。(PHPで)それらを取得するにはどうすればよいですか?

4

2 に答える 2

4

何かが存在するかどうかを確認したり、何かがnull(またはそうでない)かどうかを確認したりできます。

したがって、$existshttp://docs.mongodb.org/manual/reference/operator/exists/)の場合:

db.col.find({"results.1357651706": {$exists:true}})

そして、何かがそうではないかどうかをチェックするためにnull

db.col.find({ "results.1357651706": {$ne: null} })

注:通常は、nullクエリを逆に使用して何かが存在するかどうかを確認してからnull、アプリで判断プロセスを実行することをお勧めします。このようにして、クエリでスパースインデックスを使用して、よりスリムにすることもできます。

于 2013-01-08T14:17:26.617 に答える
1

Sammayeの答えに+1しますが、このようなクエリを厄介にする動的フィールド名を取り除くためにスキーマを作り直すことを検討してください。

代わりにこのようなもの:

{ 
   "_id" : ObjectId("50ec1d93ba02ece1979ee4a5"), 
   "url" : "google.com" 
   "results" : [ 
      { id: 1357651347, "data1" : "a", "data2" : "b", "data3" : "c" },
      { id: 1357651706, "data1" : "d", "data2" : "e", "data3" : "f" },
      { id: 1357651772, "data1" : "g", "data2" : "h", "data3" : "i" } 
    ]
}

次に、次のように、探している結果を含むドキュメントをクエリできます。

db.col.find({'results.id': 1357651706})
于 2013-01-08T14:25:37.103 に答える