使用dbref参数从mongodb获取数据

brccelvz  于 2023-08-04  发布在  Go
关注(0)|答案(1)|浏览(97)

我有集合A,它引用了集合B。A的少数文档可能不包含B引用。A[ { _id:1 Name:“abc”B:DBRef('B ','4sd567fgv5b78n899')},{ _id:2 Name:“def”} ]
B{ _id:ObjectId('4sd567fgv5b78n899 ')Type:“alpha”}
我必须在B不存在的情况下获取所有A,或者如果存在,则只获取那些B.Type==“alpha”的情况。我的应用程序有Mongo模板和mongoRepository。
我尝试从B集合中获取所有id 1st,其中B.Type==“alpha”,然后使用orOperator从A集合中获取记录,其中B为null或A.B in(从上面的查询中获取所有id)。它需要大约7秒来获取10 k记录,这是不可行的,而且我获取数据的方式也不是正确的方式。

laximzn5

laximzn51#

您可以使用聚合中的查找从引用文档中获取数据。您还需要记住,如果您遇到性能问题,您已经添加了适当的索引。

db.A.aggregate(
 
  {$lookup: {
    from:"B",
    localField: "_id",
    foreignField: "_id",
    as: "bdoc"

   }},
   {$match: {
    "bdoc.type": "alpha"
   }}
)

字符串

相关问题