从JSON字符串中提取ObjectId

时间:2014-01-27 06:00:14

标签: java json mongodb

如何在将JSON字符串插入MongoDB之前提取它的对象ID?
如何将Object id设置为主键?

2 个答案:

答案 0 :(得分:0)

首先,MongoDB自己生成ObjectID("507f191e810c1972xxxxx")(如果你没有设置它)。如docs中所述:

  

所有MongoDB文档都必须具有唯一值的_id字段。这些操作没有明确指定_id字段的值,因此mongo在将字段插入集合之前为字段创建唯一的ObjectId值。

在本文中,ObjectID描述了BSON ObjectID规范。格式包括:

  
      
  1. 时间戳。这是一个unix风格的时间戳。它是一个有符号的int,表示1970年1月1日之前或之后的秒数   (UTC)。
  2.   
  3. 机。这是机器主机名(或mac /网络地址)或虚拟机的(md5)哈希的前三个字节   机器ID。
  4.   
  5. PID。这是生成对象id的进程的进程id(或线程id)的2个字节。
  6.   
  7. 增量。这是一个不断递增的值,如果计数器不能在语言/运行时使用,则为随机数。
  8.         

    服务器本身和几乎所有驱动程序都使用上述格式。

成功插入后,大多数驱动程序都会返回保存_id的{​​{1}}。

<小时/> 主键和&amp;索引ObjectID("507f191e810c1972xxxxx")字段保留给MongoDB中的主键,并且应该是唯一值。如果您未向_id设置任何内容,则会自动生成_id,如上所述。

MongoDB创建默认的ObjectID("507f191e810c1972xxxxx")索引,这是_id字段的唯一索引。 MongoDB默认在所有集合上创建此索引。您无法删除_id上的索引。有关详细信息,请参阅link

答案 1 :(得分:-1)

你可以使用许多json库,例如google的gson: https://code.google.com/p/google-gson/ 添加JAR文件后,可以使用fromJson方法获取对象。 http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html