让我们说:
这是我: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 ???
我尝试使用$和运算符(不应该使用它,因为它是隐含的),但没有任何结果。