roh*_*ker 2 mongoose mongodb mongodb-query aggregation-framework
我在编写 find/aggregate mongo 查询时遇到一些问题,其中我的要求是获取所有文档,但条件如下:
假设我有 2 个文档:
{
_id: 5ccaa76939d95d395791efd2,
name: 'John Doe',
email: 'john.doe@foobar.com',
private: true
}
{
_id: 5ccaa76939d95d395791efd2,
name: 'Jane Doe',
email: 'jane.doe@foobar.com',
private: false
}
Run Code Online (Sandbox Code Playgroud)
现在我试图弄清楚的查询是,如果该字段private为真,那么当我查询时,我必须获取除电子邮件字段之外的所有文档(如果private为真则不包括电子邮件字段),如下所示:
{
_id: 5ccaa76939d95d395791efd2,
name: 'John Doe',
private: true
}
{
_id: 5ccaa76939d95d395791efd2,
name: 'Jane Doe',
email: 'jane.doe@foobar.com',
private: false
}
Run Code Online (Sandbox Code Playgroud)
$redact在aggregate()中尝试过$cond,,,$$PRUNE以及$$DESCEND遇到$$REMOVE(看起来像是最新的功能),但无法获得所需的输出。请帮我查询
您可以使用$$REMOVE从返回的文档中删除字段。
db.collection.aggregate([
{ "$addFields": {
"email": {
"$cond": [
{ "$eq": ["$private", true] },
"$$REMOVE",
"$email"
]
}
}}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1994 次 |
| 最近记录: |