【发布时间】:2021-09-03 09:55:06
【问题描述】:
- 我有一个来自集合“用户”的示例项目:
{
"_id" : ObjectId("612e8361942c250f4ca280f3"),
"_cart" : [
{
"_id" : "60e38a2f2f6338e00e4ceff6",
"count" : 2
},
{
"_id" : "60e38a2f2f6338e00e4ceff7",
"count" : 3
},
{
"_id" : "60e38a2f2f6338e00e4ceff8",
"count" : 4
}
],
"name" : "max1",
"email" : "andrey.kupets1@i.ua"
}
- 我有这样的产品集合:
/* 1 */
{
"_id" : ObjectId("60e38a2f2f6338e00e4ceff6"),
"name" : "Куб-лабиринт Svoora Замок",
"category" : "Настольные игры",
"price" : 449.0
}
/* 2 */
{
"_id" : ObjectId("60e38a2f2f6338e00e4ceff7"),
"name" : "Настольная игра Hasbro Классическая Монополия обновленная (C1009_121)",
"category" : "Настольные игры",
"price" : 449.0
}
/* 3 */
{
"_id" : ObjectId("60e38a2f2f6338e00e4ceff8"),
"name" : "Настольный футбол Merchant Ambassador 2-в-1",
"category" : "Настольные игры",
"price" : 1899.0
}
-
如何通过在
_cart-field 中嵌套_id-field 将产品对象加入到用户集合中的_cart-field? -
我尝试以这种方式加入:
db.getCollection('users').aggregate([
{$lookup: {
from: 'products',
localField: '_cart',
foreignField: '_id',
as: '_productsInCart'
}}
])
- 我期待下一个输出:
{
"_id" : ObjectId("612e890a3bb5da0328c4ffe4"),
"_cart" : [
{
"_id" : "60e38a2f2f6338e00e4ceff6",
"count" : 2
},
{
"_id" : "60e38a2f2f6338e00e4ceff7",
"count" : 3
},
{
"_id" : "60e38a2f2f6338e00e4ceff8",
"count" : 4
}
],
"name" : "max1",
"email" : "andrey.kupets1@i.ua",
"_productsInCart" : [
{
"_id" : ObjectId("60e38a2f2f6338e00e4ceff6"),
"name" : "Куб-лабиринт Svoora Замок",
"category" : "Настольные игры",
"count" : 2,
"price" : 449.0,
},
{
"_id" : ObjectId("60e38a2f2f6338e00e4ceff7"),
"name" : "Настольная игра Hasbro Классическая Монополия обновленная (C1009_121)",
"category" : "Настольные игры",
"count" : 3,
"price" : 449.0,
},
{
"_id" : ObjectId("60e38a2f2f6338e00e4ceff8"),
"name" : "Настольный футбол Merchant Ambassador 2-в-1",
"category" : "Настольные игры",
"count" : 4,
"price" : 1899.0,
}
]
}
- 但实际上我在 _productsInCart 字段中有输出:
"_productsInCart" : [ ]
【问题讨论】:
标签: mongodb join collections aggregate