Mongodb查询从多个键中选择记录

Mongodb查询从多个键中选择记录,mongodb,select,Mongodb,Select,让数据库中的记录 {"_id":"1","unit":"a1", "vehicle1" : "car"} {"_id":"2","unit":"a2", "vehicle1" : "truck", "vehicle2" : "bike"} {"_id":"3","unit":"b1", "vehicle1" : "car"} {"_id":"4","unit":"zz", "vehicle1" : "truck", "vehicle2" : "car", "vehicle3" : "car" }

让数据库中的记录

{"_id":"1","unit":"a1", "vehicle1" : "car"}
{"_id":"2","unit":"a2", "vehicle1" : "truck", "vehicle2" : "bike"}
{"_id":"3","unit":"b1", "vehicle1" : "car"}
{"_id":"4","unit":"zz", "vehicle1" : "truck", "vehicle2" : "car", "vehicle3" : "car" }
是否有一个命令可以查找具有以下参数的条目或所有条目:

db.accidents.find( { vehicle*: "bike" } );

而是为车辆设置一个阵列

下面是一个可以插入的JSON示例

{"_id":"2", "unit":"a2", "vehicle": ["truck", "bike"]}
您可以查询的方式是:

db.accidents.find({"vehicle":"bike"});

假设您不想更改数据,这是我能想到的唯一方法

db.accidents.find( { $or: [
  {"vehicle1": "bike"}, 
  {"vehicle2": "bike"}, 
  {"vehicle2": "bike"}
]} )

显然,您需要知道有多少车辆*变型。Sushant建议的数组会更好

如果车辆编号对您很重要

{"_id": "2", 
 "unit": "a2",
 "vehicle": [{no: 1, name: "truck"}, {no:2, name: "bike"}]
}

之后,您可以单独查询每个字段,也可以使用高级查询操作。

不,没有;这很好地说明了你的模式有缺陷。如果像Sushant在回答中建议的那样切换到单个
车辆
数组,会更干净。有关索引数组的更多信息,请参阅MongoDB文档。我在将近一年后回来,忘记了登录。谢谢苏珊特和所有人。事实上,我的模式是错误的。经过几个小时的搜索,再加上我的一个,你真是太棒了
db.Selfie.find({$and:[{{{u id:0.0},{“kEN8rMiSvqeiSFw8n9ZgTYbqzXf1:{'$exists':1}}]})