我有一个计划
{
"_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)?
答案 0 :(得分:4)
您可以检查是否存在某些内容,或者您可以检查某些内容是否为空(
)因此对于$exists
(http://docs.mongodb.org/manual/reference/operator/exists/):
db.col.find({"results.1357651706": {$exists:true}})
并检查某些内容是否不是null
:
db.col.find({ "results.1357651706": {$ne: null} })
注意:通常最好使用null
查询来检查某些内容是否为null
,然后在您的应用中执行判断过程。这样,您也可以在查询中使用稀疏索引,使其更精简。
答案 1 :(得分:1)
+1给Sammaye的答案,但考虑重新设计你的架构以摆脱动态字段名称,使这样的查询变得尴尬。
取而代之的是:
{
"_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})