无法根据 Mongodb 中的布尔值获取数据
unable to fetch data based on boolean value in Mongodb
我在 mongo 中有 JSON 数据,我只想从数组中获取 activeInd=true 的域。
下面是我在数据库中的示例数据。
{
"organizationId" : 339975,
"domains" : [
{
"application" : "ABC",
"activeInd": true,
"subdomain":["URL1","url2"]
},
{
"application" : "mno",
"activeInd": false,
"subdomain":["URL3","url4"]
},
{
"application" : "pqr",
"activeInd": false,
"subdomain":["URL","url6"]
},
{
"application" : "egh",
"activeInd": true,
"subdomain":["URL11","url16"]
}]
}
而且我已经尝试了如下的一些解决方案
db.collectionName.aggregate([{$project: {organizationId: {$eq: ["$organizationId", 339975]},
domains:{
$filter: {
input: "$domains",
as : "domains",
cond: {$eq: ["$$domains.activeInd", true]}
}
}}
}])
这也是从 organizationId 获取数据,但我的要求是在给定的 organizationId 中,应该在 activeInd=true 的位置获取域
一般来说,我需要如下示例的输出
所需输出
{
"organizationId" : 339975,
"domains" : [
{
"application" : "ABC",
"activeInd": true,
"subdomain":["URL1","url2"]
},
{
"application" : "egh",
"activeInd": true,
"subdomain":["URL11","url16"]
}]
}
有人可以帮我吗
也许 $filter 如下:
db.collection.aggregate([
{
$match: {
organizationId: 339975
}
},
{
$project: {
domains: {
$filter: {
input: "$domains",
as: "item",
cond: {
$eq: [
"$$item.activeInd",
true
]
}
}
}
}
}
])
解释:
- 在匹配阶段,您只获取必要的 organizationId 文档
- 在筛选阶段,您只会从域中获取 activeInd 项目
我在 mongo 中有 JSON 数据,我只想从数组中获取 activeInd=true 的域。 下面是我在数据库中的示例数据。
{
"organizationId" : 339975,
"domains" : [
{
"application" : "ABC",
"activeInd": true,
"subdomain":["URL1","url2"]
},
{
"application" : "mno",
"activeInd": false,
"subdomain":["URL3","url4"]
},
{
"application" : "pqr",
"activeInd": false,
"subdomain":["URL","url6"]
},
{
"application" : "egh",
"activeInd": true,
"subdomain":["URL11","url16"]
}]
}
而且我已经尝试了如下的一些解决方案
db.collectionName.aggregate([{$project: {organizationId: {$eq: ["$organizationId", 339975]},
domains:{
$filter: {
input: "$domains",
as : "domains",
cond: {$eq: ["$$domains.activeInd", true]}
}
}}
}])
这也是从 organizationId 获取数据,但我的要求是在给定的 organizationId 中,应该在 activeInd=true 的位置获取域 一般来说,我需要如下示例的输出 所需输出
{
"organizationId" : 339975,
"domains" : [
{
"application" : "ABC",
"activeInd": true,
"subdomain":["URL1","url2"]
},
{
"application" : "egh",
"activeInd": true,
"subdomain":["URL11","url16"]
}]
}
有人可以帮我吗
也许 $filter 如下:
db.collection.aggregate([
{
$match: {
organizationId: 339975
}
},
{
$project: {
domains: {
$filter: {
input: "$domains",
as: "item",
cond: {
$eq: [
"$$item.activeInd",
true
]
}
}
}
}
}
])
解释:
- 在匹配阶段,您只获取必要的 organizationId 文档
- 在筛选阶段,您只会从域中获取 activeInd 项目