上面 MongoDB 3.3.0 中获取文档的 _id
Fetch _id of a Document in MongoDB 3.3.0 above
试图从我们的一项服务中重构大量代码,我最终使用了一段代码:
Document documentObject;
String docMongoId = ((DBObject) documentObject).removeField("_id").toString();
虽然不是在编译时但在执行过程中导致
java.lang.ClassCastException: com.pack.model.Document cannot be cast
to com.mongodb.DBObject
其中Document
是我们定义的类型。我们现在有一段代码如下:
MongoCollection<Document> dbCollection = mongoClient.getDatabase("dbName")
.getCollection("collectionName", Document.class);
寻求帮助,已经通过几个链接 -
Get ID of last inserted document in a mongoDB w/ Java driver
MongoError: cannot change _id of a document
How to query documents using "_id" field in Java mongodb driver?
主要建议使用 BasicDBObject
,我们不想再使用旧的上下文。有没有一种方法可以让我现在(通过客户端更新)在 java 中访问文档的 _id
?
请务必在此处询问所需的任何其他信息或缺失信息。
想法是将 bson 类型的文档转换为您的模型文档。添加了演示用法的示例 class。
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import org.bson.types.ObjectId;
public class Mongo {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient();
MongoDatabase db = mongoClient.getDatabase("dbName");
MongoCollection <org.bson.Document> dbCollection = db.getCollection("collectionName", org.bson.Document.class);
MongoCursor <org.bson.Document> iterator = dbCollection.find().iterator();
while (iterator.hasNext()) {
org.bson.Document inDoc = iterator.next();
Document outDoc = new Document();
outDoc.setId(inDoc.getObjectId("_id"));
outDoc.setName(inDoc.getString("name"));
System.out.print(outDoc.toString());
}
}
public static class Document {
private ObjectId id;
private String name;
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Document{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
}
试图从我们的一项服务中重构大量代码,我最终使用了一段代码:
Document documentObject;
String docMongoId = ((DBObject) documentObject).removeField("_id").toString();
虽然不是在编译时但在执行过程中导致
java.lang.ClassCastException: com.pack.model.Document cannot be cast to com.mongodb.DBObject
其中Document
是我们定义的类型。我们现在有一段代码如下:
MongoCollection<Document> dbCollection = mongoClient.getDatabase("dbName")
.getCollection("collectionName", Document.class);
寻求帮助,已经通过几个链接 -
Get ID of last inserted document in a mongoDB w/ Java driver
MongoError: cannot change _id of a document
How to query documents using "_id" field in Java mongodb driver?
主要建议使用 BasicDBObject
,我们不想再使用旧的上下文。有没有一种方法可以让我现在(通过客户端更新)在 java 中访问文档的 _id
?
请务必在此处询问所需的任何其他信息或缺失信息。
想法是将 bson 类型的文档转换为您的模型文档。添加了演示用法的示例 class。
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import org.bson.types.ObjectId;
public class Mongo {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient();
MongoDatabase db = mongoClient.getDatabase("dbName");
MongoCollection <org.bson.Document> dbCollection = db.getCollection("collectionName", org.bson.Document.class);
MongoCursor <org.bson.Document> iterator = dbCollection.find().iterator();
while (iterator.hasNext()) {
org.bson.Document inDoc = iterator.next();
Document outDoc = new Document();
outDoc.setId(inDoc.getObjectId("_id"));
outDoc.setName(inDoc.getString("name"));
System.out.print(outDoc.toString());
}
}
public static class Document {
private ObjectId id;
private String name;
public ObjectId getId() {
return id;
}
public void setId(ObjectId id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Document{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
}