进行前缀搜索
query = ({$or:[{country_lc:/^unit.*/, docType:'country'}, {region_lc:/^unit.*/, docType:'region'}, {city_lc:/^unit.*/, docType:'city'}]})
FIELDS = [
country : 1
, region : 1
, city : 1
, docType : 1
]
SORT_RULE = [
country_lc : 1
, region_lc : 1
, city_lc : 1
]
def locCursor = db.location.find(query, FIELDS).sort(SORT_RULE)
但这也给了我重复的结果......所以我想要disticnt结果。区别应该是在该领域 名为' name'在位置收集。对于每个唯一名称的手段,它应该是五个我一个结果
答案 0 :(得分:0)
在MongoDB shell中,你可以这样做:
db.location.aggregate([
{$match: {$or:[
{country_lc:/^unit.*/, docType:'country'},
{region_lc:/^unit.*/, docType:'region'},
{city_lc:/^unit.*/, docType:'city'}
]}},
{$group: {
_id: '$name',
country: '$country',
region: '$region',
city: '$city',
docType: '$docType'
}},
{$sort: {couuntry_lc: 1, region_lc: 1, city_lc: 1}}
])
获得结果。