我把这些文件放在“银行”的托收里。" accounts“数组存储链接到每个银行的帐户的ID。
/* 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“是这样的:
/* 1 */
{
"_id" : "1",
"owner" : "Antonio"
}
/* 2 */
{
"_id" : "2",
"owner" : "Pedro"
}
/* etc, up to 12 accounts */我想要找到位于“马德里”的任何银行中的所有帐户(我应该获得除7和8之外的所有帐户)我认为第一步是创建一个位于马德里的银行数组,如下所示:
banksInMadrid = db.banks.find({ city: "Madrid"}).toArray()但我不知道下一步该怎么做。
谢谢。
编辑:我使用的是MongoDB 3.2
发布于 2021-03-24 20:49:43
每当我们需要来自两个或更多集合的数据时,我们都会在aggregation管道中执行$lookup。Read this doc并尝试如下所示:
db.accounts.aggregate([
{
$lookup: {
from: "banks",
localField: "_id",
foreignField: "accounts",
as: "banks"
}
},
{ $unwind: "$banks" },
{
$match: { "banks.city": "Madrid" }
},
{
$project: { banks: 0 }
}
]);输出:
/* 1 */
{
"_id" : "1",
"owner" : "Antonio"
},
/* 2 */
{
"_id" : "2",
"owner" : "Pedro"
}发布于 2021-03-24 20:48:51
您可以使用find into子文档,如下所示:
db.banks.find( { "accounts._id": 2 )有关详细信息,请查看以下内容:https://docs.mongodb.com/manual/tutorial/query-embedded-documents/
https://stackoverflow.com/questions/66781282
复制相似问题