MongoDB奇怪的查找行为

时间:2017-04-25 11:58:39

标签: mongodb

让我们说:

这是我: db.collection.find( {'field1' : { '$in' : [ 'a', 'b' ] } } ) - 返回10,正确

这是II: db.collection.find( {'field2' : { '$in' : [ 'a', 'b' ] } } ) - 返回20,正确

这是(I或II): db.end_collection.find({'$or':[{'field1':{'$in':['a','b'] }},{'field2':{'$in':['a','b']}}}]}) - 返回15(有些重叠,正确)

这是III: db.collection.find( {'field3' : { '$in' : [ 'c', 'd' ] } } ) - 返回30,正确

这是IV: db.end_collection.find({'$or':[{'field1':{'$in':['a','b'] }},{'field2':{'$in':['a','b']}}}], 'field3':{'$in':['c','d']}}) - 返回12(正确)

这是(I或II)和(III或IV): db.end_collection.find({'$or':[{'field1':{'$in':['a','b'] }},{'field2':{'$in':['a','b']}}}], {'$or':[{'field3':{'$in':['c','d'] }},{'field4':{'$in':['c','d]}}}]}) - 返回60,000 !!!! (当然不正确)

怎么可能,我添加了更多的选择标准,而不是返回的项目更少,它的方式更多。

简而言之。让我(我或我)返回15,让我(III或IV)返回12,并且:(我或II)和(III或IV)是60,000 ???

我尝试使用$和运算符(不应该使用它,因为它是隐含的),但没有任何结果。

0 个答案:

没有答案