对于任何集合中不可用的属性值,返回0而不是no

时间:2015-01-28 05:20:07

标签: mongodb-query mongodb-java

我有一份文件如下:

{
"_id" : ObjectId("5491d65bf315c2726a19ffe0"),
"tweetID" : NumberLong(535063274220687360),
"tweetText" : "19 RT Toronto @SunNewsNetwork: WATCH: When it comes to taxes, regulations, and economic freedom, is Canada more \"American\" than America? http://t.co/D?",
"retweetCount" : 1,
"Added" : ISODate("2014-11-19T04:00:00.000Z"),
"tweetLat" : 0,
"tweetLon" : 0,
"url" : "http://t.co/DH0xj0YBwD ",
"sentiment" : 18
}

现在我想得到所有这样的文件,其中添加是在2014-11-19和2014-11-23之间,但我们应该注意,例如这个日期可能没有数据:2014-11-21现在问题开始了:这里发生这种情况时我想要0这个日期的情绪总和而不是什么都不返回(我知道我可以在java中检查这个但是这是不合理的),我的代码如下,除了日期工作正常那是不可用的,它不会返回任何内容而不是0:

andArray.add(new BasicDBObject("Added", new BasicDBObject("$gte",
            startDate)));
    andArray.add(new BasicDBObject("Added", new BasicDBObject("$lte",
            endDate)));
DBObject where = new BasicDBObject("$match", new BasicDBObject("$and",
            andArray));
    stages.add(where);
DBObject groupFields = new BasicDBObject("_id", "$Added");
    groupFields.put("value",
            new BasicDBObject("$avg", "$sentiment"));
    DBObject groupBy = new BasicDBObject("$group", groupFields);
    stages.add(groupBy);
    DBObject project = new BasicDBObject("_id", 0);
    project.put("value", 1);
    project.put("Date", "$_id");
    stages.add(new BasicDBObject("$project", project));

    DBObject sort = new BasicDBObject("$sort", new BasicDBObject("Date", 1));
    stages.add(sort);
    AggregationOutput output = collectionG.aggregate(stages);

现在我希望值0为我拥有的集合中不可用的日期, 例如,请参阅以下内容中的2014-11-21:

  [ { "value" : 6.0 , "Date" : { "$date" : "2014-11-19T04:00:00.000Z"}} , {    "value" : 20.0 , "Date" : { "$date" : "2014-11-20T04:00:00.000Z"}},{ "value" : 0    , "Date" : { "$date" : "2014-11-21T04:00:00.000Z"}}]

而不是:

 [ { "value" : 6.0 , "Date" : { "$date" : "2014-11-19T04:00:00.000Z"}} , { "value" : 20.0 , "Date" : { "$date" : "2014-11-20T04:00:00.000Z"}}}]

有可能吗?

1 个答案:

答案 0 :(得分:0)

为什么检查Java不合理? “没有”的平均值为0是合理的吗?

根据您的问题的上下文,一种解决方案是您插入具有0情绪的虚拟记录。