我正在阅读MongoDB数据库参考文档中的手册参考部分,但我并不真正理解"解析引用字段的第二个查询"部分.你能给我一个这个问题的例子,这样我就可以更好地了解他们在谈论什么.
"手动引用是指在另一个文档中包含一个文档的_id字段的做法.然后,应用程序可以发出第二个查询以根据需要解析引用的字段."
Neil Lunn.. 9
文档在您所指的手册部分中非常清楚,该部分是关于数据库引用的部分.理解这一点最重要的部分包含在页面上的开头陈述中:
"MongoDB不支持连接.在MongoDB中,一些数据被非规范化,或者与文档中的相关数据一起存储以消除对连接的需要.但是,在某些情况下,将相关信息存储在单独的文档中是有意义的,通常是在不同的集合或数据库中".
进一步信息,包括你如何的话题可能会选择来处理访问您在另一个集合存储数据.
还有就是DBREF它没有考虑太多更详细,说明可能在某些驱动程序作为一种方式,当这些在你的文件被发现,他们将自动检索(扩大)引用文档到当前文档来实现.这将在"幕后"实现,并为该集合的另一个查询提供该_id的文档.
在手动引用的情况下,这基本上是说文档中只有一个字段,其中包含来自另一个文档的ObjectId.这只与DBRef有所不同,因为基本驱动程序实现永远不会处理的事情会让您处理如何进一步检索其他文档.
如果是:
> db.collection.findOne() { _id:, name: "This", something: "Else", ref: }
ref
文档中的字段只不过是一个简单的ObjectId,并没有什么特别之处.这允许您做的是提交您自己的查询以获取此引用的对象详细信息:
> db.othercollection.findOne({ _id:}) { _id: name: "That" something: "I am a sub-document to This!" }
请记住,客户端上的所有这些进程都是通过驱动程序API实现的.在任何情况下,这些获取其他文档都不会发生在服务器上.
文档在您所指的手册部分中非常清楚,该部分是关于数据库引用的部分.理解这一点最重要的部分包含在页面上的开头陈述中:
"MongoDB不支持连接.在MongoDB中,一些数据被非规范化,或者与文档中的相关数据一起存储以消除对连接的需要.但是,在某些情况下,将相关信息存储在单独的文档中是有意义的,通常是在不同的集合或数据库中".
进一步信息,包括你如何的话题可能会选择来处理访问您在另一个集合存储数据.
还有就是DBREF它没有考虑太多更详细,说明可能在某些驱动程序作为一种方式,当这些在你的文件被发现,他们将自动检索(扩大)引用文档到当前文档来实现.这将在"幕后"实现,并为该集合的另一个查询提供该_id的文档.
在手动引用的情况下,这基本上是说文档中只有一个字段,其中包含来自另一个文档的ObjectId.这只与DBRef有所不同,因为基本驱动程序实现永远不会处理的事情会让您处理如何进一步检索其他文档.
如果是:
> db.collection.findOne() { _id: <ObjectId>, name: "This", something: "Else", ref: <AnotherObjectId> }
ref
文档中的字段只不过是一个简单的ObjectId,并没有什么特别之处.这允许您做的是提交您自己的查询以获取此引用的对象详细信息:
> db.othercollection.findOne({ _id: <AnotherObjectId > }) { _id: <ObjectId> name: "That" something: "I am a sub-document to This!" }
请记住,客户端上的所有这些进程都是通过驱动程序API实现的.在任何情况下,这些获取其他文档都不会发生在服务器上.