Mongodb复杂对象查询

时间:2012-12-17 06:14:56

标签: node.js mongodb

我想从包含对象的集合中找到不同的城市值,如下所述:

{
location:{
              address:'XYZ',
              city:'New York'
         }
}

你可以帮我解决我需要解决的问题吗?我知道我必须使用elemMatch$exists。但我的以下查询似乎工作并返回一个空集:

db.collectionName.distinct({'location':{'city':{$exists: true}}})

2 个答案:

答案 0 :(得分:3)

db.collection.distinct将查询作为第二个参数。

这是你应该怎么做的: -

db.collectionName.distinct('location.city', {'location.city': {$exists: true}})

此外,您还可以使用此distinct数据库命令: -

db.runCommand({  "distinct": "collectionName", 
                 "key": "location.city", 
                 "query": {'location.city' : {$exists: true}}
              }).values

答案 1 :(得分:1)

db.collectionName.distinct('location.city')应该可以解决问题。