MongoDB使用简单查找返回错误响应

时间:2019-05-30 05:24:41

标签: mongodb mongodb-query aggregation-framework

我知道这听起来很奇怪,但是请仔细阅读整个案例。

我有一个运行了一年以上的MongoDB 3.2.5版,今天我对一个集合进行了一个简单的查询:

db.collection_name.find({chkst:0},{chkst:1});

据我所知,响应应该是文档,其中chkst字段为0,而_id的文档为ObjectID。但是,答复是:

{ 
  "_id" : ObjectId("5fe7f8c08cdc06066edb5258"), 
  "chkst" : NumberInt(1)
}

注意到值chkst吗?我知道这是不可能的。这是Studio3T的图片,因为我之前觉得RoboMongo可能有问题!

MongoDB Find incorrect results

正如我所说,这是一个很奇怪的案例,我可能不是第一个遇到这种情况的人,但是我在MongoDB中4年来第一次遇到这样的问题!

我想补充一点,同时对同一个集合进行汇总会得出正确的结果。

db.collection_name.aggregate([
  {"$group": {"_id": "$chkst", "count": {"$sum": 1}}}
]);

这产生了预期的结果!与聚合中的NO问题一样,但find会产生意外结果。

任何帮助或解释都很好!


更新

经过一小段简短的思考之后,我发现该字段已被索引!因此,我只是简单地删除了索引并再次添加了它。

VOILA!问题已解决!。也许update.writeErrors.index在更新过程中确实给出了错误,或者在该字段上写了错误,但未处理!有什么方法可以监视索引写入失败?我部署了MongoDB Ops Manager,用于管理4个分片集群,尽管这是一个独立的集群。 在我100%确信这是原因之前,我无法将其作为答案。

0 个答案:

没有答案