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 回答