我有一个从 mongo db 返回的 json 文件,如下所示:
[
{
"_id": {
"$date": "2014-10-19T04:00:00.000Z"
},
"value": 29
},
{
"_id": {
"$date": "2014-10-20T04:00:00.000Z"
},
"value": 20
},
{
"_id": {
"$date": "2014-10-21T04:00:00.000Z"
},
"value": 21
}
]
Run Code Online (Sandbox Code Playgroud)
现在我想以以下格式读取java中的日期:2014/10/25
但是当我使用:
System.out.println("DAte is : "+result.get("_id").toString() );
Run Code Online (Sandbox Code Playgroud)
结果是:
DAte is : Sun Oct 19 01:00:00 ADT 2014
Run Code Online (Sandbox Code Playgroud)
然后我唯一想到的是使用子字符串并手动将日期转换为 2014-10-25 但我相信会有更好的方法。有谁有想法吗?
更新 :
这是答案:
非常感谢您的帮助
我是使用 MongoDB 的新手。我刚刚通过 Maven 导入了最新的 MongoDB java 客户端:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.2</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然后我写了一个非常简单的程序来测试插入操作。
//I use a replicaset
MongoClient mongoClient = new MongoClient(
Arrays.asList(new ServerAddress("10.12.16.136", 29017),
new ServerAddress("10.12.16.136", 29018),
new ServerAddress("10.12.16.136", 29019)));
//I just want to write and ignore any database errors. (This does not work)
mongoClient.setWriteConcern(WriteConcern.UNACKNOWLEDGED);
//Get database and collection
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection<Document> collection = database.getCollection("realtime");
//This does not work too.
collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
//Make a simple object to insert. I already have a document with the same _id …Run Code Online (Sandbox Code Playgroud) 使用 mongo java 驱动程序我可以这样排序:
.sort(new BasicDBObject("firstColumn",1));
Run Code Online (Sandbox Code Playgroud)
如何按两个字段排序?
我在 MongoDB 中有一个 processingClickLog 集合。
{
"_id" : ObjectId("58ffb4cefbe21fa7896e2d73"),
"ID" : "81a5d7f48e5df09c9bc006e7cc89d6e6",
"USERID" : "206337611536",
"DATETIME" : "Fri Mar 31 17:29:34 -0400 2017",
"QUERYTEXT" : "Tom",
"DOCID" : "www.demo.com",
"TITLE" : "Harry Potter",
"TAB" : "People-Tab",
"TOTALRESULTS" : "1",
"DOCRANK" : 1
}
{ "id":
....
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试在 java 中执行一个复杂的查询。我的查询是获取处理的ClickLog 集合,其中
下面是我的Java代码。我能够满足前三个条件。但是我被困在按 USERID 分组的第四个条件中。
String jsonResult = "";
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("test1");
MongoCollection<Document> collection …Run Code Online (Sandbox Code Playgroud) 我无法从嵌入的文档中检索地址字段。我还没有看到 3.4 MongoDB 驱动程序的任何解决方案。
System.out.println("Selecting Person ");
MongoCollection<Document> collection = mdb.getCollection("Person");
MongoCursor<Document> cursor = collection.find().iterator();
try {
while (cursor.hasNext()) {
Document temp_person_doc=cursor.next();
Document temp_address_doc=temp_person_doc.get("address");
String houseNo=temp_address_doc.getString("houseNo");
}
} finally {
cursor.close();
}
Run Code Online (Sandbox Code Playgroud)
这是文档结构。
{
"_id" : "5aae9920982f271ba4b08735",
"firstName" : "homer",
"surname" : "simpson",
"address" : {
"houseNo" : 742,
"address" : "evergreen terrace",
"city" : "springfield",
}
}
Run Code Online (Sandbox Code Playgroud) 当需要存储以 Java 实例形式(来自生成的 java 类)的 protobuf3 消息时,最好的选择是存储对象本身,然后从数据库中读回它。
我用它来将此类消息存储在 Mongodb 中。在研究这个问题时,我找不到方法,所以决定在这里询问。
在我的项目中,我使用Morphia来轻松地将 POJO 对象映射到 Mongodb 数据库。但在 2018 年,mongo java 驱动程序开始支持 pojo 自行映射,Morphia 项目被 Mongodb 团队放弃。Morphia 社区版现在已经弃用了DAO,我想知道为什么不直接基于 Mongodb 驱动编写自己的 DAO 类呢?所以我的问题是:
使用Mongodb和Java还需要Morphia吗?Morphia 与直接使用 Mongodb Java 驱动相比有什么好处?
Example code for using the Java driver:
// Getting an object by id:
collection.find(eq("_id", id), Pojo.class).first();
// Insert into collection
collection.insertOne(pojo);
// Update
collection.replaceOne(eq("_id", id), pojo);
// Delete
collection.deleteMany(filter).getDeletedCount();
Run Code Online (Sandbox Code Playgroud) 我有一个移动应用程序,我需要在后端支持java/mongodb.我正在考虑使用各种组合.我现在不想花很多钱作为它的"爱好"应用程序开始.
这些是我想到的各种选择:
在EC2上托管Java和MogoDB - > Ill必须管理所有mongoDB管理工作,从创建副本集到备份(m不是mongo DB guru)
在mongolab.com或mongohq.com上托管Java someplace(任何建议?)和MongoDB - >他们为我管理mongodb,我只是编写Java层,只是在我的数据库设计上工作.
那里有便宜的选择的任何输入?
我有两个类调用School,并Student为你看到的.我想搜索"学校名称是bla bla bla的学生"和"学生的成绩高于90"的学校.我读了一些文件,但我有点困惑.
public class School extends BasicDBObject {
private int id;
private String name;
private String number;
private List<Student> studentList = new ArrayList<Student>();,
//getter and setters
}
public class Student extends BasicDBObject{
private int id;
private String name;
private String grade;
private School school;
//getter and setters
}
Run Code Online (Sandbox Code Playgroud) 嘿,
我需要一些帮助将以下 MongoDB 查询转换为 MongoDB Java 驱动程序查询。
请注意,查询有效。
db.days.aggregate([
{ $match: { 'day' : 'March_1'}},
{ $project: {
_id : 0,
day: 1,
events: {$filter: {
input: '$events',
as: 'event',
cond: {$eq: ['$$event.year', '2002']}
}}
}}
])
Run Code Online (Sandbox Code Playgroud)
我的尝试是这样的,但失败了,我需要你的帮助。
Document query = new Document("$match", new Document("day", day)).
append("$project", new Document("_id", 0).
append("day", 1).
append("events", new Document("$filter", new Document(
"input", "$" + category).
append("as", "event").
append("cond", new Document("$eq", Arrays.asList("$$event.year", year))))));
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
"{ "ok" : 0.0, "errmsg" : "A pipeline stage specification object …Run Code Online (Sandbox Code Playgroud)