gpt4 book ai didi

对 DBRef 类型的 mongodb 查询

转载 作者:行者123 更新时间:2023-12-04 18:03:06 27 4
gpt4 key购买 nike

如何在 mongodb shell 中将此查询转换为有效的 mongodb 查询。

{ 'cars.owner.$ref' : 'users' } 

cars.owner 在这里是 DBRef,但是 $ref 是无效的

我收到这个错误:

"$err" : "Positional operator does not match the query specifier."

我的目标是弄清楚是否有任何汽车由不同的集合和用户“拥有”。

最佳答案

您可以在 Mongo shell 中查询 DBRef,但您必须使用 DBRef() 函数。引用必须至少包含 $ref 和 $id。来自docs :

DBRef documents resemble the following document:

{ "$ref" : <value>, "$id" : <value>, "$db" : <value> }

当 cars.owner 是对 users 集合中文档的引用时,查找 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" } })

关于对 DBRef 类型的 mongodb 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31753058/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com