1

私のデータベースには次のような構造があります。

{
  {
     "document_id" : 35,
     "transport" : ["car", "plane", "train", "boat"]
  },

  {
     "document_id" : 36,
     "transport" : ["car", "bike", "train"]
  }
}

たとえばトランスポート「飛行機」を含むドキュメント/レコードを見つけるために検索クエリを実行するにはどうすればよいですか?

助けてくれてありがとう。

スティーブン

4

3 に答える 3

3

要素を含む配列を検索するには、その要素を配列と照合するだけです。

したがって、使用するだけです:-

db.collection.find({transport:"plane"})

あなたが望むものをあなたに与えるでしょう。

Javaでの実装は次のとおりです。-

BasicDBObject doc = new BasicDBObject("document_id", 35)
                             .append("transport", new String[] {"car", "plane"});

BasicDBObject doc2 = new BasicDBObject("document_id", 36)
                             .append("transport", new String[] {"car"});

coll.insert(doc);
coll.insert(doc2);

DBObject query = new BasicDBObject("transport", "plane");
DBCursor cursor = coll.find(query, new BasicDBObject("_id", 0));

while (cursor.hasNext()) {
    System.out.println(cursor.next());
}

出力:-

{ "document_id" : 35 , "transport" : [ "car" , "plane"]}
于 2012-12-20T09:12:01.223 に答える
3

MongoShellから

db.find({transport:"plane"})するだろう。

値が配列の場合、MongoDBは配列全体を検索してクエリに一致させます。

Javaドライバーの使用。

あなたは最初にMongoコレクションを入手します

List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
BasicDBObject dbo = new BasicDBObject();
dbo.append("transport", "plane");
DBCursor cur = collection.find(dbo);
while (cur.hasNext()) {
            list.add(JSONHelper.toJSON(cur.next().toMap()));
        }
于 2012-12-20T09:12:13.830 に答える
0
@Document(collection = "document")
public class Transport {


private ObjectId document_id;

private ArrayList transport;



}


//

   List<String> list = new ArrayList<String>();
        list.add("car");
        list.add("plane");
        list.add("train");
        list.add("boat");

Transport transport;

transport.setTransport(list);
于 2015-01-27T06:56:51.400 に答える