我正在使用Mongoose.js 4.11.6 Node.js 6.0。
我有一个看起来像贝娄的用户文档 -
var UserSchema = new Schema({
name: { type: String, default: '' },
email: { type: String, default: '' },
phone: { type: String, default: '' },
hashed_password: { type: String, default: '' },
role: { type: String, default: '' },
created_at: { type: Date, default: Date.now }
});
我正在按照mongoose查询运行 -
UserSchema.find({role:options.role}) 。选择(options.select) .sort({' email':-1}) .exec(CB);
理想情况下,这应该返回按电子邮件ID排序的匹配用户列表。该查询完全符合我们在AWS部署中的预期。 但在Cosmos DB MongoDB托管中它返回空结果集。但是当.sort({' email':-1})被删除时,查询会返回结果(但不是按照所需的顺序)。
答案 0 :(得分:1)
如在单独的线程中讨论的那样确实有效。下面是完整的示例代码,显示了按照预期的方式使用CosmosDB&通过Mongoose的Mongo API。
https://gist.github.com/m-gagne/00893a32a0e4c7f593a1676ba1380e63
var mongoose = require('mongoose');
mongoose.connect('<COSMOS DB CONNECTION STRING>');
var Schema = mongoose.Schema;
var userSchema = new Schema({
email: { type: String, default: '' },
});
var User = mongoose.model('User', userSchema, "users");
User.find({}).select(['email']).sort({ 'email': -1 }).exec(function(err, results) {
if(err) {
console.log("!!! ERROR !!!");
console.log(err);
return;
}
console.log(results);
});
答案 1 :(得分:0)
我正在使用 Cosmos Db文档,与字符串字段有相同的问题。 问题是当我创建集合时,policyIndex默认为
{
"kind": "Hash",
"dataType": "String",
"precision": 3
}
哈希类型不适合订单,将其更改为范围并且运行良好
{
"kind": "Range",
"dataType": "String",
"precision": -1
},