0

こんな書類があります。

"item" : "060478132",
    "some_id" : {
        "5" : {
            "obj1" : "4",
            "obj2" : "4"
        }
    }

これは私が今行っていることであり、より良いものになると思いますが、mongoのJavaドライバーは初めてです

DBObject query = start("item").is("060478132").get();
DBObject obj = collection.find(query).toArray().get(0);
DBObject some_ids = (DBObject) obj.get("some_id");
DBObject theObj = (DBObject) some_ids.get("5");
4

1 に答える 1

0

MongoDB ではフィールドに基づくプロジェクションが可能であるため、結果のドキュメントのフィールド数を減らすことができます。ただし、サブドキュメントを直接クエリすることはできません。私があなたのコードで見たのは、クエリ オブジェクトの構築方法です。new BasicDBObject(...)代わりに単純なものを使用してください!

nullチェック付きの完全な例:

DBObject query = new BasicDBObject("item", "060478132");
DBObject document = collection.findOne(query, new BasicDBObject("some_id", 1);
if (document != null) {
    DBObject someId = document.get("some_id");
    if (someId != null) {
        DBObject result = someId.get("5");
    }
}
于 2013-09-27T09:16:50.077 に答える