不知道何时会出现此问题,但我无法始终如一地从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] 删除。
我来说两句