0

mongo を使用してドキュメントを保存しています。そして、それらの1つは以下のようになります。

Name:
  first: joe
  last: blo
address:
  city: Paris
  state: London
relatives:
  first order:
      aunt: ashley
      uncle: tom
  second order
      aunt: roma
      uncle: robin

'aunt':'roma' に一致するドキュメントを取得するクエリを実行できるようにしたいと考えています。それにアクセスするためにmongo Java APIを使用しています

私が理解して読んだことから、次のクエリは機能するはずですが、機能しません

 DBObject winner = new BasicDBObject("$match", new BasicDBObject("aunt", "roma") );
 System.out.println("count "+coll.aggregate(winner).getCommandResult());

これが失敗する理由を理解し、説明するのを手伝ってくれる人はいますか?

ありがとうK

4

1 に答える 1

1

私の提案は、理解を深めるために、MongoDb javascript コンソールを使用して最初にデータベース コレクションに対してクエリをテストする練習を少ししてから、使用しているドライバー (この場合は Java) に対してクエリを直接記述できるようにすることです。例:

このように記述されたドキュメントに一致するには

{
    name: {
        first: "joe",
        last: "blo"
    } ,
    address: {
        city: "Paris",
        state: "London"
    },
    relatives: {
        first_order: {
            aunt: "ashley",
            uncle: "tom"
        },
        second_order: {
            aunt: "roma",
            uncle: "robin"
        }
    }
}

このようなクエリを作成します

db.my_collection.find({"relatives.second_order.aunt": "roma"})

ドキュメントを というコレクションに挿入するには、次のmy_collectionように簡単です。

db.my_collection.insert(
{
    name: {
        first: "joe",
        last: "blo"
    } ,
    address: {
        city: "Paris",
        state: "London"
    },
    relatives: {
        first_order: {
            aunt: "ashley",
            uncle: "tom"
        },
        second_order: {
            aunt: "roma",
            uncle: "robin"
        }
    }
})

クエリを適切に Java API に書き込むために参照できる参考文献: http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/

また、MongoDb コンソールを操作するためのドキュメント (この場合はサブドキュメントのクエリ): http://docs.mongodb.org/manual/reference/method/db.collection.find/#query-subdocuments

それが役に立てば幸い。

于 2013-11-09T02:22:27.307 に答える