【问题标题】:Azure mongodb $in query not workingAzure mongodb $in 查询不起作用
【发布时间】:2018-04-09 22:43:30
【问题描述】:

我有包含 140 个文档的员工集合

{

    "name" : "name1",

    "dept" : "tech",

    "address" : "adr3"

}

在所有 140 份文档中,dept 是 tech 当我在 azure mongodb

中执行查询时
    MongoDatabase db = mongo.getDatabase("test")
    def query = new BasicDBObject(['dept':['$in':['tech']]])
    FindIterable documents = db.getCollection("employees").find(query)
    def outList =  documents.collect {it}

我只得到 101 个文档而不是 140 个记录

这在 本地 mongodb 中运行良好。直到上周,这对我来说都是天蓝色的。 我在这里做错了吗?有人遇到类似情况吗?

如果我将查询更改为

def query = new BasicDBObject(['dept':'tech'])

我得到了所有 140 个文档

如果我将批量大小更改为 10,则 $in 查询仅返回 10 个文档。

【问题讨论】:

    标签: java mongodb azure grails azure-cosmosdb


    【解决方案1】:

    Xal。根据本案例的分享:Cosmos Mongo API "In" Array expression issue,看来是微软那边的问题。你可以等到bug修复。

    回复如下:

    感谢大卫报告此事!我调查了这个问题,这是一个 我们这边的错误在多种条件下表现出来。一世 已经对其进行了修复,并将在周末检查它 (然后取决于我们的部署周期将修复传播给所有 世界各地的数据中心)。如果您有任何疑问,请告诉我 不工作,正在阻止你。最好的问候,Orestis

    希望对你有所帮助。

    【讨论】:

    • 感谢大卫和杰
    【解决方案2】:

    我遇到了同样的问题,我使用 $elemMatch

    解决了这个问题
    mongoDB.collection('mycol', (err, collection) => {            
        if (err) throw err;            
        collection.find({dept: {$elemMatch:{$in : ['tech']}}}).toArray((err, docs) => {
            console.log(docs);
        });
    });
    

    【讨论】:

    • 谢谢 Sajeetharan,它对你有用吗,对我没用,因为 dept 不是数组。
    猜你喜欢
    • 2013-09-18
    • 2012-06-09
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多