Node.js MongooseJS-使用过滤器和排序进行区分
我有一个地址列表,我想得到一个州的城市列表。因此,一个独特的城市列表。按州划分Node.js MongooseJS-使用过滤器和排序进行区分,node.js,mongodb,mongoose,mongodb-query,Node.js,Mongodb,Mongoose,Mongodb Query,我有一个地址列表,我想得到一个州的城市列表。因此,一个独特的城市列表。按州划分 Locations.find( {'address.state':state}, {_id:1,'address':1,'name':1}, callback ); 给我一个完整的列表,按特定的状态 Locations.distinct( 'address.city',{'address.state':state},{$sort:{'address.city':1}}, callback ); 这也是行不通的 L
Locations.find( {'address.state':state}, {_id:1,'address':1,'name':1}, callback );
给我一个完整的列表,按特定的状态
Locations.distinct( 'address.city',{'address.state':state},{$sort:{'address.city':1}}, callback );
这也是行不通的
Locations.distinct( 'address.city',{'address.state':state} ).sort().exec(callback);
这似乎给了我一个城市列表,但它不是按字母顺序排列的…所以我很难检查我的数据
搜索我得到的所有信息
"Atmore",
"Daleville",
"Abbeville",
"Bessemer",
"Alberta",
"Huntsville",
"Addison",
"Albertville",
"Helena",
"Alexandria",
...
帮助-干杯。根据我引用的mongoose v5.0.4文档:
可以通知它实际上是mongoose限制。在的mongodb 3.6文档中,没有对它的引用。因此,mongodb distinct函数返回一个不同值的数组,因此在您的情况下,您不能链接任何其他操作,如排序 与find it returns cursor一样,您可以应用sort对返回的数据进行排序 对于具有排序的非不同结果,可以使用
Locations.find( {'address.state':state}, {_id:1,'address':1,'name':1}).sort({'address.city':1}).exec(callback);
对于distinct和sort,您必须使用聚合
Locations.aggregate( [{$match:{'address.state':state}},{$group:{_id:'$address.city'}},{$sort:{_id:1}}).exec(callback);