mongo结果与唯一字段不一致
Inconsistent mongo results with unique field
不确定这个问题是什么时候出现的,但我无法始终如一地从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 上进行了测试
Ok问题确实是唯一索引不存在/已损坏。我对在游戏后期添加唯一索引感到内疚,可能已经有一些重复操作阻止了Mongo创建索引。
我删除了重复项,然后在mongo shell中这样做:
db.orders({name: 1}, {unique: true, dropDubs: true});
我认为以上内容会消除重复,但它会因为重复而消亡。我确信有一种shell方法可以做到这一点,但我只是用一些js代码完成了,然后运行上面的代码来重新创建可以用验证的索引
db.orders.getIndexes()
相关文章:
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- 强制URL字段不具有“;http://www."使用regex
- 模态上的输入/注册字段不起作用
- 如何使文本、数字和日期html输入字段以一致的方式支持Ctrl+Z(撤消)
- cakepp中的javascript验证表示字段不是't是必需的't有效
- Accounts.createUser问题.如何使电子邮件字段不唯一
- ReactJS道具已更新,但字段不会重新渲染
- jQuery-用于检查是否有任何字段不为空,然后将所有字段设为必需字段的代码
- 我怎么知道MYSQL统计中哪个字段不匹配
- Emberjs 车把内容绑定编辑字段不起作用
- 如果输入字段不是 40 个字符,则隐藏付款表单PayPal提交按钮
- 如何从MongoDB中选择所有文档,其中一个字段不等于某个值
- 如果 2 个或更多输入字段不为空,则触发事件
- Javascript 表单 - 字段不是必需的
- 在下拉列表中选择后,tr 中的输入字段不显示
- 引导超前指令对输入字段不起作用
- 输入字段不保存十进制数并将其设置为 ,00
- 用于验证空输入字段不起作用的 JS 函数
- 日期范围选取器输入字段不是 24 小时格式
- mongo结果与唯一字段不一致