mongo结果与唯一字段不一致

网络袋熊

不知道何时会出现此问题,但我无法始终如一地从mongo中获取项目。我在数据库中有4000多个项目。这是模式。

var Order = new Schema({
 code: {
  type: String,
  unique: true
},
...
});

现在运行一些查询:

Order.find().exec(function(err, orders) {
 console.log(orders.length); // always 101 
})

Order.find().limit(100000).exec(function(err, orders) {
 console.log(orders.length); // varies, sometimes 1150, 1790, 2046 - never more
})

现在,如果我从架构中删除“ unique:true”,它将始终返回总金额:

Order.find().exec(function(err, orders) {
 console.log(orders.length); // always 4213 (correct total)
})

关于为什么会发生这种行为的任何想法吗?afaik的代码都是唯一的(来自商人的订单)。这已经在3.8.6、3.8.8上进行了测试

网络袋熊

好的问题确实是唯一索引不存在/已损坏。我后来在游戏中添加了唯一索引,这很内probably,可能已经有一些愚蠢的事情阻止了Mongo创建索引。

我删除了重复项,然后在mongo shell中执行了以下操作:

db.orders({name: 1}, {unique: true, dropDubs: true});

我认为上面的方法可以消除公母,但由于公母而会死亡。我敢肯定有一种shell方法可以做到这一点,但是我只是用一些js代码做到了,然后运行上面的代码来重新创建可以用以下方法验证的索引:

db.orders.getIndexes()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章