【发布时间】:2017-10-09 10:35:30
【问题描述】:
假设我有一个聚合管道,它现在指向一个包含这样构建的文档的集合:
{'name': 'Paul',
'football_position': 'Keeper',
'basketball_position': 4,...}
显然,并非每个人都参加每项运动,因此对于某些文档,可能会有不存在的字段。那么关于他们的文件将是
{'name': 'Louis'}
我想要做的是在我的聚合管道中过滤至少参加一项运动的人
我知道使用{'$match': {'football_position': {'$exists': True}}} 很容易检查一个字段,但我想检查这些字段是否存在。
我发现一个老问题有点相似 (Check for existence of multiple fields in MongoDB document),但它会检查 all 字段的存在——虽然很麻烦,但可以通过乘以 $match 操作来实现.另外,也许 mongoDB 现在有比编写自定义 JavaScript 函数更好的方法来处理这个问题。
【问题讨论】: