mongodb 与外部字段匹配的查找
mongodb lookup with foreign field match
我想知道如何查找匹配项。
我可以通过这个查询查找两个集合。
db.category.aggregate([
{
$lookup:
{
from: "faq",
localField: "_id",
foreignField: "category_code",
as: "faq"
}
}
])
然后我得到这个结果。
{
"_id":ObjectId("1234"),
"category_name":"about account",
"faq": [
{
"_id":ObjectId("faq id blah blah"),
"category_code" : ObjectId("1234"),
"faq_title":"When you can't create account",
"del_flg":"N"
},
{
"_id":ObjectId("faq id blah blah2222"),
"category_code" : ObjectId("1234"),
"faq_title":"When you change your account",
"del_flg":"N"
},
{
"_id":ObjectId("faq id blah blah3333"),
"category_code" : ObjectId("1234"),
"faq_title":"When you lost your account",
"del_flg":"Y"
}
[
}
我只想要两个常见问题解答,其中“del_flg”是“N”
我不熟悉使用mongodb。
如果我使用管道可以吗?我尝试了一些管道示例,但我做不到。
你应该试试 $lookup with pipeline,
- let 将使用
$$
创建一个变量来访问查找管道内的 id
- 管道匹配使用
$expr
因为我们正在比较两个字段 $$id
= $category_code
- 设置匹配条件
del_flg
:N
db.category.aggregate([
{
$lookup: {
from: "faq",
let: {
id: "$_id"
},
pipeline: [
{
$match: {
$expr: {
$eq: [
"$$id",
"$category_code"
]
},
"del_flg": "N"
}
}
],
as: "faq"
}
}
])
我想知道如何查找匹配项。
我可以通过这个查询查找两个集合。
db.category.aggregate([
{
$lookup:
{
from: "faq",
localField: "_id",
foreignField: "category_code",
as: "faq"
}
}
])
然后我得到这个结果。
{
"_id":ObjectId("1234"),
"category_name":"about account",
"faq": [
{
"_id":ObjectId("faq id blah blah"),
"category_code" : ObjectId("1234"),
"faq_title":"When you can't create account",
"del_flg":"N"
},
{
"_id":ObjectId("faq id blah blah2222"),
"category_code" : ObjectId("1234"),
"faq_title":"When you change your account",
"del_flg":"N"
},
{
"_id":ObjectId("faq id blah blah3333"),
"category_code" : ObjectId("1234"),
"faq_title":"When you lost your account",
"del_flg":"Y"
}
[
}
我只想要两个常见问题解答,其中“del_flg”是“N”
我不熟悉使用mongodb。
如果我使用管道可以吗?我尝试了一些管道示例,但我做不到。
你应该试试 $lookup with pipeline,
- let 将使用
$$
创建一个变量来访问查找管道内的 id
- 管道匹配使用
$expr
因为我们正在比较两个字段$$id
=$category_code
- 设置匹配条件
del_flg
:N
db.category.aggregate([
{
$lookup: {
from: "faq",
let: {
id: "$_id"
},
pipeline: [
{
$match: {
$expr: {
$eq: [
"$$id",
"$category_code"
]
},
"del_flg": "N"
}
}
],
as: "faq"
}
}
])