2

データベース内のレコードを

{"_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" } );
4

3 に答える 3

8

代わりに、車両用の配列を用意してください。

これが挿入できるJSONのサンプルです

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

そして、クエリを実行する方法は次のとおりです。

db.accidents.find({"vehicle":"bike"});
于 2012-11-25T19:07:24.423 に答える
1

データを変更したくないと仮定すると、これが私が考えることができる唯一の方法です。

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

明らかに、車両*のバリエーションがいくつあるかを知っている必要があります。Sushantが提案する配列の方がはるかに優れています。

于 2012-11-25T20:35:51.360 に答える
0

そして、車両番号があなたにとって重要である場合。

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

その後、各フィールドのみでクエリを実行したり、事前のクエリ操作を利用したりできます。

于 2012-12-10T13:14:53.753 に答える