1

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

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

你能帮我解决我需要触发的查询吗?我知道我必须使用elemMatchand $exists。但我的以下查询似乎有效并返回一个空集:

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

2 回答 2

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
于 2012-12-17T06:29:40.063 回答
1

db.collectionName.distinct('location.city')应该做的伎俩。

于 2012-12-17T06:28:23.517 回答