【发布时间】:2015-07-31 18:45:44
【问题描述】:
如何在 mongodb shell 中将此查询转换为有效的 mongodb 查询。
{ 'cars.owner.$ref' : 'users' }
cars.owner 在这里是一个 DBRef,但是$ref 是无效的
我收到此错误:
"$err" : "Positional operator does not match the query specifier."
我的目标是弄清楚是否有任何汽车被不同的收藏品“拥有”然后是用户。
【问题讨论】:
-
当您只允许引用一个集合时,通常最好只存储 _id 而不是 DBRef。
-
@Philipp 我只是在探索数据。只存储 _id 而不是 DBRef 的动机是什么?
-
DBRef 基本上被认为已被弃用,我对未来持续的驱动程序支持不抱太大希望。这是一个早期的想法,并不是一个很好的构思。该格式还存储与现在为保留字符建立的命名约定冲突的字段名称。现在的一般约定是简单地存储文档的
_id和可选的集合和/或数据库命名空间,或者通过描述关系的外部模式逻辑和_id。坚持使用 DBRef 是一条充满恐惧的黑暗之路。尽可能下车。 -
@BlakesSeven 在文档中我可以在哪里找到 DBRef 已被弃用?
-
@WillemD'haeseleer DBRef 是一个对象,它包括_id、集合和可选的数据库。在大多数情况下,您已经知道将在其中找到引用的集合和数据库,因此它们是无用的膨胀。
标签: mongodb mongodb-query mongo-shell dbref