当前位置: 首页 > 面试题库 >

如何在MongoDB中查询引用的对象?

穆景辉
2023-03-14
问题内容

我的Mongo数据库中有两个集合,并且Foo包含对一个或多个Bars的引用:

Foo: { 
  prop1: true,
  prop2: true,
  bars: [
     {
     "$ref": "Bar",
     "$id": ObjectId("blahblahblah")
     }
  ]
}

Bar: {
   testprop: true
}

我想要的是找到所有Foo至少Bar具有一个testprop设置为true的。我已经尝试过此命令,但不会返回任何结果:

db.Foo.find({ "bars.testprop" : { "$in": [ true ] } })

有任何想法吗?


问题答案:

您现在可以在Mongo 3.2中使用
$lookup

$lookup 有四个论点

from:在同一数据库中指定要执行联接的集合。from集合无法分片。

localField:指定从文档输入到$ lookup阶段的字段。$
lookup在from集合的文档中对localField和foreignField执行相等的匹配。

foreignField:指定from集合中文档中的字段。

as:指定要添加到输入文档中的新数组字段的名称。新数组字段包含from集合中的匹配文档。

db.Foo.aggregate(
  {$unwind: "$bars"},
  {$lookup: {
    from:"bar",
    localField: "bars",
    foreignField: "_id",
    as: "bar"

   }},
   {$match: {
    "bar.testprop": true
   }}
)


 类似资料:
  • 我在MongoDB中有一个动态键值对象。 任何帮助都会有帮助。 谢了。

  • 问题内容: 我需要知道abt在mongo中的索引如何提高查询性能。并且当前我的数据库没有索引。如何索引现有数据库?我是否还需要创建一个仅用于索引的新字段? 问题答案: 从根本上说,MongoDB中的索引类似于其他数据库系统中的索引。MongoDB支持MongoDB集合中文档中包含的任何字段或子字段上的索引。 索引在这里详细介绍,我强烈建议您阅读本文档。 其中包括有关索引操作,策略和创建选项的部分,

  • 问题内容: 我想用SQLlike查询来查询一些东西: 我如何在MongoDB中实现相同目标?我like在文档中找不到运算符。 问题答案: 那必须是: 或类似: 您正在寻找某种在某处包含“ m”的东西(SQL的运算符等效于Regexp的),而不是在字符串的开头固定了“ m”的东西。 注意: mongodb使用的正则表达式比sql中的“ LIKE”更强大。使用正则表达式,您可以创建您想像的任何模式。

  • 问题内容: 我想用SQL查询来查询一些东西: 如何在MongoDB中实现相同目标?我在文档中找不到运算符。 问题答案: 那必须是: 或类似: 您正在寻找某种在某处包含“ m”的东西(SQL的’ ‘运算符等效于Regexp的’ ‘),而不是在字符串的开头锚定了“ m”的事物。 注意: mongodb使用的正则表达式比sql中的“ LIKE”更强大。使用正则表达式,您可以创建您想像的任何模式。 有关正

  • 问题内容: 我正在尝试在mongodb中执行查询日期,但结果始终为空。我的查询如下: //变量resultaMongo返回空。 Obs:我也尝试不使用.isoformat(),当我直接放入mongodb时,只有添加ISODate才返回结果。因此不会返回结果: 更重要的是,如果您编辑返回: 这是数据库中的记录序列: 如果我打印python的json变量,则会看到类似以下内容的内容: 我的Mongnd

  • 我一直在使用jmeter对mongodb进行加载测试,接下来我将使用一个具有这些数据的不同的db 我已经在这里保存了已保存的mongoHost,mongoPort,databaseName,collectionName jmeter变量 这个连接测试通过了,但我无法从数据库中获取、读取任何数据并通过测试,这是代码 错误 谢谢你