当前位置: 首页 > 知识库问答 >
问题:

Mongo把_id的文件列成子文件的数组

章涵容
2023-03-14

使用MongoDB,我希望找到一个集合中的所有文档,这些文档的id显示在另一个集合中的子文档数组中。在这里使用$in操作符并不真正有效,因为我只尝试匹配子文档中的单个值。

假设我有以下来自db.foos文档:

{ _id: 1, foo: [ { bar_id: 1 }, { bar_id: 3 } ] }

以下是db.bars:

{ _id: 1, foo: "bar" }
{ _id: 2, foo: "abr" }
{ _id: 3, foo: "rab" }

我想在数据库中查找所有文档。可以在foo数组中找到具有_id的bar(在本例中,返回具有_id1和3的db.bar)。大概是这样的:

var foos = db.foos.findOne( { _id: 1 } )
db.bars.find( _id: { $in: foos.foo.bar_id } )

当然,那是行不通的。我该如何着手完成这件事?

共有1个答案

郭璞
2023-03-14

您可以使用集合。distinctfoo

db.bars.find({ '_id': { '$in': db.foos.distinct('foo.bar_id', {'_id': 1}) }})

演示:

> db.foos.distinct('foo.bar_id', {'_id': 1})
[ 1, 3 ]
> db.bars.find({ '_id': { '$in': db.foos.distinct('foo.bar_id', {'_id': 1})}})
{ "_id" : 1, "foo" : "bar" }
{ "_id" : 3, "foo" : "rab" }
 类似资料:
  • 使用Azure CosmosDB Mongo。 我在文档和子文档中有文本字段。我希望能够搜索到。 使用可以很好地处理父文档属性。但似乎根本不看孩子。甚至不返回任何错误。 文档: 搜索: 如果我将上述代码与搜索“find”一起使用。它将返回文档。 如果我使用它与搜索“发现”。它不会返回任何东西。 PS:我尝试过使用,但它不受支持,并且作为错误返回。

  • 我有一个简单的模式,里面有一个数组。当我创建一个包含映射数组中的项的新项时,映射数组中的项会自动分配_ID。但是,当我试图将项添加到现有项的映射数组时,新的映射是用的_id创建的。我如何让mongoose为我生成这个_ID?我在文件里找不到。

  • 我正在寻找一种方法来获取zip文件中的文件列表。我创建了一个方法来获取目录中的文件列表,但我也在寻找一种方法来获取zip文件中的文件,而不是只显示zip文件。 以下是我的方法:

  • 问题内容: 我如何返回一个包含该文件夹中的所有文件以及子文件夹的文件数组,我的方法仅适用于该文件夹,并且不包括子文件夹。 问题答案: 使用您当前的代码,进行以下调整:

  • 谁能告诉我从.p12文件中提取/转换证书.crt文件的正确方法/命令吗?在我搜查之后。我找到了将.pem转换为.crt的方法。但未找到.p12到.crt。

  • 我试图理解如何用flume-ng结尾的文件,这样我就可以把数据推到HDFS。在第一个实例中,我设置了一个简单的conf文件: 这是一个测试,我的期望是我将在控制台上看到输出。我使用以下命令运行它: 我得到以下输出: 2005年12月12日11:01:07信息生命周期。生命周期管理程序:启动生命周期管理器1 12/12/05 11:01:07 INFO节点。FlumeNode:Flume节点启动-尾