我已经构建了一个动态查询生成器来根据许多因素创建我想要的查询,但是,在极少数情况下它会表现得很奇怪。经过一天的阅读日志后,我发现了一种可以简化的情况:
db.users.find({att: ‘a’, att: ‘b’})
我期望的是 mongodb 默认使用 AND,所以上面的查询结果应该是一个空数组。然而,它不是! 但是当我明确地使用 AND 时,结果是一个空数组
db.users.find({$and: [{att: 'a'}, {att: ‘b'}]})
最佳答案
在javascript中对象的键应该是唯一的,否则值会被最新的值替换 (同样mongodb shell是基于js的,所以遵循js的一些规则)
const t = {att: 'a', att: 'b'};
console.log(t);
所以在你的情况下你的查询是这样的:
db.users.find({att: ‘b’})
如果您希望在上述情况下结果为空,则必须在代码中处理这种情况
关于node.js - 并且偶尔会在 shell 和 Node native 驱动程序上产生错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67290872/