我的文档具有以下结构:
{
"address":{
"building":"1007",
"coord":[
-73.856077,
40.848447
],
"street":"Morris Park Ave",
"zipcode":"10462"
},
"borough":"Bronx",
"cuisine":"Bakery",
"grades":[
{
"date":{
"$date":1393804800000
},
"grade":"A",
"score":2
},
{
"date":{
"$date":1378857600000
},
"grade":"A",
"score":6
},
{
"date":{
"$date":1358985600000
},
"grade":"A",
"score":10
},
{
"date":{
"$date":1322006400000
},
"grade":"A",
"score":9
},
{
"date":{
"$date":1299715200000
},
"grade":"B",
"score":14
}
],
"name":"Morris Park Bake Shop",
"restaurant_id":"30075445"
}
我需要搜索文档地址中数组坐标首项小于-95.754168的文档
试图做
db.colect1.find({address: {coord:{$lt:-95.754168}}},{"address.coord":1})
或这个
db.colect1.find({"address.coord.1":{$lt:-95.754168}},{"address.coord":1})
(colect1是存储文档的集合)没有成功。特别是第二种选择让我感到惊讶,为什么它不起作用?
一个优雅的解决方案是
db.colect1.find({"address.coord":{$elemMatch: { $lt:-95.754168, $ne: 1000000 }}},{"address.coord":1})
但是并不是最佳选择,因为我只想查询coord数组中的第一个元素。
我对此表示感谢
答案 0 :(得分:0)
以下查询将为我们提供预期的输出:
db.collection.find(
{
$where: function(){
return this.address.coord[0] < -95.754168
}
},
{
"address.coord":1
}
).pretty()
对于Mongo版本:3.4.2
{{1}}