【发布时间】:2016-10-13 18:02:16
【问题描述】:
BasicDBObject matchDBObejct = new BasicDBObject('$match',
new BasicDBObject("type", ArticleSourceType.MICROBLOGS.toString())
.append(trackInsightGraphFilterCO.getMetricFeild(), new BasicDBObject('$exists', true).append('$ne', ""))
)
BasicDBObject groupDBObject = new BasicDBObject('$group', new BasicDBObject("_id", '$' + trackInsightGraphFilterCO.getMetricFeild()).append("total", new BasicDBObject('$sum', 1)))
BasicDBObject limitDBObject = new BasicDBObject('$sort', new BasicDBObject("total", -1))
BasicDBObject sortDbObject = new BasicDBObject('$limit', 10);
List<BasicDBObject> pipeline = [matchDBObejct, groupDBObject, limitDBObject, sortDbObject];
我上面的查询运行良好- 但是当我在匹配查询中添加其他参数时,我没有得到任何结果。
.append("track",new BasicDBObject('$in',tracks))
tracks 是 Track 域的列表 .toString(); 即-
List<Track> trackDomainObjects;
for(Track track:trackDomainObjects){
tracks.add(track.toString())
}
我的匹配查询变成了这样-
BasicDBObject matchDBObejct = new BasicDBObject('$match',
new BasicDBObject("type", ArticleSourceType.MICROBLOGS.toString())
.append("track",new BasicDBObject('$in',tracks))
.append(trackInsightGraphFilterCO.getMetricFeild(), new BasicDBObject('$exists', true).append('$ne', ""))
)
控制台没有异常,我的 Mongo DB 中有数据。 我下面的控制台查询给了我数据-
db.socialNotification.aggregate([
{$match:{"type":"MICROBLOGS","track":{$in:[DBRef('track',ObjectId("57f5fe0ce4b0e960f6d6ab9a")),DBRef('track',ObjectId("57f5fe2be4b0e960f6d6ac42"))]},"authorLocation" : { $exists : true, $ne : "" } }},
{ $group: { _id: "$authorLocation", total: { $sum: 1 } } },
{$sort:{ total:-1}},
{$limit: 10} ])
【问题讨论】:
标签: mongodb mongodb-query spring-data aggregation-framework