【问题标题】:$datetostring in mongo does not workmongo 中的 $datetostring 不起作用
【发布时间】:2015-03-18 15:20:07
【问题描述】:

我有一个问题让我忙了 3 天,仍在与它斗争:我有如下的 mongodb 查询:

 db.test.aggregate([ 
  { 
     $project: { 
         yearMonthDay: { 
              $dateToString: { format: "%Y-%m-%d", date: "$date" } 
         } 
     } 
  } 
]) 

现在我正在尝试将其转换为 java 但我真的不知道如何转换这一行:

yearMonthDay: { 
       $dateToString: { format: "%Y-%m-%d", date: "$date" } 
} 

我尝试了这段代码,但根本不工作:

 DBObject project = new BasicDBObject("_id", 0);
 DBObject format = new BasicDBObject("format","%Y-%m-%d");
 format.put("date", "$date");
 DBObject formattedDate = new BasicDBObject("$dateToString",format);
 project.put("yearMonthDay",formattedDate);

但我收到以下错误:

com.mongodb.CommandFailureException:

{ "serverUsed" : "...." , "errmsg" : "异常:无效
运算符 '$dateToString'" , "code" : 15999 , "ok" : 0.0}

有人知道吗?

【问题讨论】:

  • 您使用的是哪个版本的 MongoDB? $dateToString 是在 3.0 中添加的。
  • @JohnnyHK 是的,我使用的是版本 3

标签: mongodb mongodb-query mongodb-java


【解决方案1】:

我在集合中插入了一个示例数据。

 {
   "_id" : 1,
   "item" : "abc",
   "price" : 10,
   "quantity" : 2,
   "date" : ISODate("2014-01-01T08:15:39.736Z")
 }

我能够使用此 java 代码为您的聚合查询获得所需的输出:

    DBCollection collection = db.getCollection("collection");
    DBObject project = new BasicDBObject();
    DBObject format = new BasicDBObject("format", "%Y-%m-%d");
    format.put("date", "$date");
    DBObject formattedDate = new BasicDBObject("$dateToString", format);
    project.put("yearMonthDay", formattedDate);
    DBObject aggregate = new BasicDBObject("$project", project);

    List<DBObject> pipeline = Arrays.asList(aggregate);
    AggregationOutput output = collection.aggregate(pipeline);
    for (DBObject result : output.results()) {
        System.out.println(result);
    }

有关Java驱动程序和聚合的更多详细信息,请查找:http://docs.mongodb.org/ecosystem/tutorial/use-aggregation-framework-with-java-driver/

【讨论】:

  • 谢谢你......这很奇怪,因为我使用你的代码,我得到这个错误:命令失败,错误 15999:'异常:无效运算符'$dateToString''......我也用这个来自 maven mvnrepository.com/artifact/org.mongodb/mongo-java-driver/… 的依赖你用的是同一个吗?
  • 我也在使用相同的 3.0.0-beta3 版本。
  • 我在运行 mongoDB 2.6 服务器时能够重现相同的错误。请确保您正在运行 3.0 服务器的实例。
  • 即使我使用版本 3 也不会出现该错误:(
  • 对于服务器和 jar?
猜你喜欢
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
相关资源
最近更新 更多