【问题标题】:How to get the _id of one document MongoDB Java如何获取一个文档MongoDB Java的_id
【发布时间】:2014-03-04 12:05:22
【问题描述】:

我正在使用MongoDBJava-driver

我需要在 MongoDB 中插入一个文档并检索该文档的 _id。 insert 方法返回 [WriteResult][1]

我不知道如何使用 WriteResult 对象来检索 _id,因为我尝试这样做:

public void insertDocument(BasicDBObject fact){
    DBCollection coll = this.getCollection("facts");
    WriteResult result = coll.insert(fact);
    String id = (String) result.getField("_id");
    System.out.println("--------------------------->"+id);

}

我在println 中有一个空的String

我的问题是如何获取我刚刚插入数据库的整个对象(带有 _id)。

谢谢!

【问题讨论】:

  • WriteResult 是一个 status 对象,而不是插入到集合中的项目的副本,请注意 result.getField 已弃用。

标签: java mongodb


【解决方案1】:

插入BasicDBObject 实例后,MongoDB 驱动程序会修改实例,为_id 字段设置值(如果您没有指定)。

因此,您仍然可以使用fact 对象并从那里获取_id

 System.out.println(fact.get("_id"));

【讨论】:

  • 那么,我的方法能否返回 BasicDBObjec 以让我的旧对象具有正确的 _id??
  • 是的,您可以返回fact。当然,你得把方法签名改成public DBObject insertDocument(BasicDBObject fact)
  • 我的最后一个问题。我可以将 BasicDBObject 映射到“Fact”对象吗?
  • 嗯...Fact 对象是什么?可能你可以,但你最好创建另一个线程并在那里提出问题。让更多人知道它:)
  • 对不起,这是我的代码的对象。我正在考虑做一些事情,比如通过 JSON 字符串将 BasicDBObject 解析为我的事实对象
猜你喜欢
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 2011-04-30
  • 2023-03-25
  • 2016-03-26
相关资源
最近更新 更多