0

図のようにドキュメントを構成していますここ

バージョンが0より大きいmoduleDataItemsのコレクションを取得したいと思います。

これは私の試みです:

            Query qu = Query.query(Criteria.where("appKey")
                    .is("MOCK_APP").and("modules._id")
                    .is("APP_1_MOD_1")
                    .and("modules.moduleDataItems.version")
                    .gt(0));

            List<DataItem> dList = mongoTemplate.find(qu,
                    DataItem.class,
                    ApplicationConstants.MONGO_APPLICATION_COLLECTION_NAME);

私は正しいことをしていないと確信しています。結果にDataItemが含まれていません。

クラスはjson構造を表します。

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

2

最後にこれを使用してそれを解決しました-

    DBObject unwindParam = new BasicDBObject("$unwind","$dataItems");
    DBObject matchParam = new BasicDBObject("$match",
                                         new BasicDBObject("dataItems.version",
            new BasicDBObject("$gt",requestedModule.getVersion())));                                       
    DBObject fields = new BasicDBObject("dataItems", 1);
    DBObject projectParam = new BasicDBObject("$project", fields);
    AggregationOutput output = mongoTemplate.getCollection(
                                    "appModules").aggregate(
                                     unwindParam, matchParam,projectParam);
    CommandResult updatedData = output.getCommandResult();
    BasicDBList resList = (BasicDBList) updatedData.get("result");
于 2013-02-20T02:10:02.393 に答える