Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongooseJS-使用过滤器和排序进行区分_Node.js_Mongodb_Mongoose_Mongodb Query - Fatal编程技术网

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);