包涵更多,这不是我的问题。只是想让别人理解。查询返回比预期的结果
作者指出:
的possible duplicate问题的解决方案允许$ elemMatch约束因为>的元件的所有是一个数组。这有点不同。
所以,在接受的答案要点提出来了。这种行为是好的 记录和你不应该“比较'苹果'与'橙子'”。这些字段是 不同的类型,虽然是有办法解决这个,对于现实世界 最好的解决办法是不这样做。
快乐的阅读:)
我的文档,我试图寻找一个集合,集合包含以下内容:
{ "_id" : ObjectId("52faa8a695fa10cc7d2b7908"), "x" : 1 }
{ "_id" : ObjectId("52faa8ab95fa10cc7d2b7909"), "x" : 5 }
{ "_id" : ObjectId("52faa8ad95fa10cc7d2b790a"), "x" : 15 }
{ "_id" : ObjectId("52faa8b095fa10cc7d2b790b"), "x" : 25 }
{ "_id" : ObjectId("52faa8b795fa10cc7d2b790c"), "x" : [ 5, 25 ] }
所以我想找到结果,其中X的10
和20
值之间下降。所以这是一个似乎顺理成章的我查询:
db.collection.find({ x: {$gt: 10, $lt: 20} })
但问题是这样的返回结果两个文件:
{ "_id" : ObjectId("52faa8ad95fa10cc7d2b790a"), "x" : 15 }
{ "_id" : ObjectId("52faa8b795fa10cc7d2b790c"), "x" : [ 5, 25 ] }
我不希望看到第二个结果是没有的值在10
和20
之间。 有人可以解释为什么我没有得到我期望的结果吗?我认为{“X”:15}应该是唯一的文档返回。
所以此外,我怎样才能得到我的期望?
这是故意参考问题[这里](http://stackoverflow.com/questions/21715121/mongodb-descending-index-weird-behavior),但它的措辞作为海报不问的实际问题。他们的问题已经在其背景下得到了回答,但对这部分的回答为任何提出类似问题的人清除了这个问题。让我们看看谁是正确的。 –
它是因为MongoDB不会过滤子文档 – Sammaye
它可以过滤子文档,但不是这样:) –