mongodb和java驱动程序重建对象

时间:2013-04-28 10:22:15

标签: java mongodb

我试图了解mongodb是如何工作的,我有一些问题。

我了解如何删除,插入,更新和选择,但我有一些“最佳实践问题”

1)我们是否必须创建一个索引,或者我们可以使用自动生成的_id?

2)如果我有2种具有n-n关系的物体(汽车和司机)。我必须得到3个收藏品(汽车,司机和一个集合女巫链接其他两个)?

3)要重建我的对象,我必须使用JSON对象解析我的json?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

三个好问题。我会轮流回答。

  

1)我们是否必须创建一个索引,或者我们可以只使用_id   自动生成?

您绝对应该尝试(重新)使用_id索引。这通常意味着将域对象中的一个唯一字段(或RDMS中的主键)移动到_id字段。如果要进行分片,你必须要小心,该字段不会变大,但这是一个单独的问题要回答。

  

2)如果我有2种物体(汽车和司机)的例子   n-n之间的关系。我必须得到3个收藏品(汽车,司机和一个   收集女巫链接另外两个)?

没有!您只需要两个集合。一辆用于汽车,一辆用于司机。 “联接表”作为DBRefs被拉入每个集合。

每个汽车文档都包含一系列DBRef或文档参考。这些引用包含驱动程序文档的数据库名称(可选),集合名称和_id。在驱动程序文档中,每个驱动汽车都有一组类似的DBRef。

大多数驱动程序都支持创建和取消引用这些文档引用。

  

3)要重建我的对象,我必须使用JSON对象解析我的json?

MongoDB通用语实际上是BSON。您可以将BSON视为JSON的类型化,二进制,易于解析的版本。大多数驱动程序都有一些能力将JSON转换为BSON的表示形式并返回。如果您使用Java进行开发,则10gen驱动程序的实用程序类为JSON。对于Asynchronous驱动程序,它被称为Json

话虽如此,除非您的数据已经是JSON,否则我不会将您的数据转换为JSON以将其转换为BSON并再次返回。而是要么为您选择的语言寻找ODM(Object-Document-Mapper),要么直接对您的域对象执行转换为驱动程序的BSON表示。

HTH- 罗布。