首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MongoDB中,如何查找id在其他文档的数组字段中的文档?

在MongoDB中,如何查找id在其他文档的数组字段中的文档?
EN

Stack Overflow用户
提问于 2021-03-24 20:41:40
回答 2查看 28关注 0票数 0

我把这些文件放在“银行”的托收里。" accounts“数组存储链接到每个银行的帐户的ID。

代码语言:javascript
复制
/* 1 */
{
    "_id" : "1",
    "city" : "Madrid",
    "accounts" : [ 
        "1", 
        "2", 
        "3", 
        "4", 
        "5", 
        "6"
    ]
}

/* 2 */
{
    "_id" : "2",
    "city" : "Berlin",
    "accounts" : [ 
        "7", 
        "8"
    ]
}

/* 3 */
{
    "_id" : "3",
    "city" : "Madrid",
    "accounts" : [ 
        "9", 
        "10", 
        "11", 
        "12"
    ]
}

集合"accounts“是这样的:

代码语言:javascript
复制
/* 1 */
{
    "_id" : "1",
    "owner" : "Antonio"
}

/* 2 */
{
    "_id" : "2",
    "owner" : "Pedro"
}

/* etc, up to 12 accounts */

我想要找到位于“马德里”的任何银行中的所有帐户(我应该获得除7和8之外的所有帐户)我认为第一步是创建一个位于马德里的银行数组,如下所示:

代码语言:javascript
复制
banksInMadrid = db.banks.find({ city: "Madrid"}).toArray()

但我不知道下一步该怎么做。

谢谢。

编辑:我使用的是MongoDB 3.2

EN

回答 2

Stack Overflow用户

发布于 2021-03-24 20:49:43

每当我们需要来自两个或更多集合的数据时,我们都会在aggregation管道中执行$lookupRead this doc并尝试如下所示:

代码语言:javascript
复制
db.accounts.aggregate([
    {
        $lookup: {
            from: "banks",
            localField: "_id",
            foreignField: "accounts",
            as: "banks"
        }
    },
    { $unwind: "$banks" },
    {
        $match: { "banks.city": "Madrid" }
    },
    {
        $project: { banks: 0 }
    }
]);

输出:

代码语言:javascript
复制
/* 1 */
{
    "_id" : "1",
    "owner" : "Antonio"
},

/* 2 */
{
    "_id" : "2",
    "owner" : "Pedro"
}
票数 1
EN

Stack Overflow用户

发布于 2021-03-24 20:48:51

您可以使用find into子文档,如下所示:

代码语言:javascript
复制
db.banks.find( { "accounts._id": 2 )

有关详细信息,请查看以下内容:https://docs.mongodb.com/manual/tutorial/query-embedded-documents/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66781282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档