Ane*_*eek 1 mongodb node.js mongodb-query
我有一个 mongo 集合。现在,用户可以根据需要使用任何字段或所有字段进行搜索。
例如:- 用户可以使用任何一个属性或任何两个属性或他记得的集合中存在的字段的任意数量的属性进行搜索。帮助我决定应该使用哪个运算符或运算符组合?
{"_id":1, "field1":"hi","field2":"bye","field3":"bro", "field4":"stuff"},
{"_id":2, "field1": "hello", "field2": "back", "field3": "fat", "field4":"cat"},
{"_id":3, "field1": "some", "random": "foo", "stuff": "bar", "field4":"help"}
Run Code Online (Sandbox Code Playgroud)
干得好 -
db.test.find({
$or:[
{
$and: [
{'stocknumber':12346},
{'model':'bmx'},
{'make':2002},
{'rego':'KA01HG6268'},
{'adate':'2017-10-01T05:07:10.969Z'},
{'cdate':'2017-10-01T05:07:10.969Z'}
]
},
{
$and: [
{'stocknumber':12347},
{'model':'bmy'},
{'make':2003}
]
}
]
}).pretty()
Run Code Online (Sandbox Code Playgroud)
您可以使用组合$and并$or在上面的例子中$or充当保护伞运算符,它让你执行这曾经结合用户记住,每个查询包含任何一个查询$and操作,可帮助您创建字段的用户记住的组合。这将是一个冗长的查询,但比许多空检查和字符串操作要好。在最坏的情况下,它将是字段数和运算符的笛卡尔积。希望这可以帮助。