java - 复杂的 Mongo Shell 命令转换为 Java 代码

标签 java mongodb mongo-shell

我有一个 Mongoshell 查询,看起来像

db.RemoteMongoData.aggregate([
        {$group: {
                "_id":"$IMEI Number",
        "Longitude":{"$last":"$Longitude"},
        "Latitude":{"$last":"$Latitude"},
        "Address":{"$last":"$Address"},
        "Timestamp":{"$last":"$Timestamp"},
            }},
        {$project: {
                 "IMEI Number":"$_id",
         "Longitude":"$Longitude",
         "Latitude":"$Latitude",
         "Address":"$Address",
         "Timestamp":"$Timestamp",
              }},
        {$sort: {
                'date': -1
            }}
    ])

我想知道如何转换这个查询,以便可以使用java执行它。

将 "Longitude":{"$last":"$Longitude"} 转换为等效的 java 对象困扰着我。 请帮忙.. 从网上可用的资源中,我编写了一个查询,其内容如下:

DBObject group = new BasicDBObject("$group", new BasicDBObject("_id", "$IMEI Number")
    .append("Longitude", new BasicDBObject("$last","$longitude"))
    .append("Latitude", new BasicDBObject("$last","$latitude"))
    .append("Address", new BasicDBObject("$last","$address"))
    .append("Timestamp", new BasicDBObject("$last","$timestamp")));

    DBObject project = new BasicDBObject("$project", new BasicDBObject("IMEI Number","$_id")
    .append("Longitude","Longitude")
    .append("Latitude","Latitude")
    .append("Address","Address")
    .append("Timestamp","Timestamp"));

    DBObject sort = new BasicDBObject("$sort", new BasicDBObject("date",-1));

    AggregationOutput output = dbCollection.aggregate(group,project,sort);

但我仍然面临类似的错误

'exception: FieldPath 'Longitude' doesn't start with $' on server localhost:27017. The full response is { "errmsg" : "exception: FieldPath 'Longitude' doesn't start with $", "code" : 16873, "ok" : 0.0 }

任何人都可以纠正或指出我的查询有什么问题,这将非常有帮助。 请帮忙.. 谢谢

最佳答案

以下代码对我有用,

DBObject group = new BasicDBObject("$group",new BasicDBObject("_id","$IMEI Number")
    .append("Longitude", new BasicDBObject("$last","$Longitude"))
    .append("Latitude", new BasicDBObject("$last","$Latitude"))
    .append("Address", new BasicDBObject("$last","$Address"))
    .append("Timestamp", new BasicDBObject("$last","$Timestamp")));

    DBObject project = new BasicDBObject("$project", new BasicDBObject("IMEI Number","$_id")
    .append ("Longitude",1)
    .append ("Latitude",1)
    .append ("Address",1)
    .append ("Timestamp",1));

    DBObject sort = new BasicDBObject("$sort", new BasicDBObject("date",-1));

AggregationOutput output = dbCollection.aggregate(group,project,sort);

关于java - 复杂的 Mongo Shell 命令转换为 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36667799/

相关文章:

java - 在java中使用axis创建异步请求的最有效方法是什么?

java - 使用 Java 在 MongoDB 中插入日期

mongodb - 如何从 MongoDB shell 连接到副本集?

javascript - 获取 mongo shell BinData 作为字符串

mongodb - 未在 mongo shell 中设置的变量

JavaFX:如何将计算的整数值添加到 TableColumn

java - JSP刷新页面时出现http错误

java - 为什么我不能在 Tomcat 上部署?无法在本地主机上发布 Tomcat v7.0 服务器的服务器配置。多个上下文的路径为 "/ROOT"?

MongoDB 保存和更新

database - Elastic Search 作为持久数据库