Cosmos DB:MongoDB排序查询返回空白结果集

时间:2017-08-09 10:53:55

标签: node.js mongodb azure mongoose azure-cosmosdb

我正在使用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})被删除时,查询会返回结果(但不是按照所需的顺序)。

2 个答案:

答案 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
                },