如何在MongoDB中壳有效的MongoDB查询把这个查询。
{ 'cars.owner.$ref' : 'users' }
cars.owner
是DBREF这里,但$ref
无效
我得到这个错误:
"$err" : "Positional operator does not match the query specifier."
我在这里的目的是要弄清楚是否有“国有”,由不同的集合,那么用户的任何汽车。
如何在MongoDB中壳有效的MongoDB查询把这个查询。
{ 'cars.owner.$ref' : 'users' }
cars.owner
是DBREF这里,但$ref
无效
我得到这个错误:
"$err" : "Positional operator does not match the query specifier."
我在这里的目的是要弄清楚是否有“国有”,由不同的集合,那么用户的任何汽车。
MongoDB的文档( 数据库参考 )说以下内容:
MongoDB的应用程序使用的两种方法有关文件之一:
- 手册参考下保存在另一个文件作为参考一个文档的_id领域。 那么你的应用程序可以运行第二个查询返回的相关数据。 这些提法很简单,足以满足大多数使用情况。
- 是DBREFS使用的第一个文档的_id领域,集合名称的值从一个到另一个文件的引用,以及可选,它的数据库名称。 通过包括这些名字,让DBREFS位于多个集合文件从一个文件集合更容易地联系在一起。 要解决DBREFS,应用程序必须执行额外的查询返回被引用的文件。 许多司机有自动形成了DBREF查询辅助方法。 司机1不会自动解析到DBREFS文件。
我不知道任何的计划,但我已阅读,应该DBREFS被弃用(?)现在。 但是,您可以使用取() - 方法加载引用的文件。 例如,我有FormView控件集合存储包含在formContent托收(DBREF)引用文档。 因此,在运行:
var view = db.formView.findOne()
view.formContent
view.formContent.fetch()
view.formContent.fetch().code
......将导致下面的输出:
DBRef("formContent", ObjectId("56cb155ea826872b67373e76"))
{
"_id" : ObjectId("56cb155ea826872b67373e76"),
"code" : "test_content",
"version" : 0
}
test_content
您可以查询DBREF在蒙戈外壳,但你必须使用DBREF()函数。 参考必须至少包括$ ref和$ ID。 从文档 :
DBREF文件类似于以下文件:
{ "$ref" : <value>, "$id" : <value>, "$db" : <value> }
当cars.owner是在收集用户的文档的引用,查询找到所有的车在那里的主人是某_id可能看起来像(假设两个集合在同一个数据库):
db.cars.find({ "owner" : DBRef("users", ObjectId("<user _id value>")) })
在$ ref和$ ID值不能直接查询。 该DBREF是在有同一文档在不同的藏品多次引用的情况下非常有用。 使用DBREF可能是矫枉过正的时候,只有一个文件中引用,如其他人所说。
如果您需要在业主现场引用不同的集合,你可能会更好,通过使用单独owner_collection和owner_id领域提供服务。 查询发现,没有用户会则是一个标准的查询所有业主:
db.cars.find({ owner_collection: { $ne: "users" } })
<parameterName>: DBRef("CollectionName", "_id Value")
放在collection.Then创建一个bean有费尔德名作为参数名称,并把吗啡ORM的@Reference注释,然后做你想做的操作