2013-02-08 131 views
0

我已經在文檔結構如圖here複雜蒙戈DB查詢 - 子文件

我想獲得moduleDataItems的集合,其中有版本說,超過0.1

這是我的嘗試:

  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結構。

任何幫助表示讚賞。

感謝

回答

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");