【问题标题】:Which mongodb operator is opposite to $ (projection) for retrieving any element matching the query哪个 mongodb 运算符与 $ (投影)相反,用于检索与查询匹配的任何元素
【发布时间】:2015-05-05 17:32:36
【问题描述】:

如何获取所有匹配查询的嵌入文档?正如文档所说:

位置 $ 运算符限制数组的内容 查询结果只包含与查询匹配的第一个元素 文件。

例子:

{ "_id" : 7, semester: 3, "grades" : [ { grade: 80, mean: 75, std: 8 },
                                   { grade: 85, mean: 90, std: 5 },
                                   { grade: 90, mean: 85, std: 3 } ] }

{ "_id" : 8, semester: 3, "grades" : [ { grade: 92, mean: 88, std: 8 },
                                   { grade: 78, mean: 90, std: 5 },
                                   { grade: 88, mean: 85, std: 3 } ] }

比如我需要std < 8的等级,运算符$只返回第一个匹配结果,所以我们有两个对象:

{ grade: 85, mean: 90, std: 5 }
{ grade: 78, mean: 90, std: 5 }

但我需要的结果:

{ grade: 85, mean: 90, std: 5 },
{ grade: 90, mean: 85, std: 3 }

{ grade: 78, mean: 90, std: 5 },
{ grade: 88, mean: 85, std: 3 }

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    为此使用聚合框架。

    .aggregate([
        {$unwind: "$grades"},
        {$match: {"grades.std": {$lt: 8}}
    ])
    

    Documentation on aggregation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2016-03-26
      • 2017-04-26
      • 1970-01-01
      • 2021-04-16
      • 2016-11-02
      相关资源
      最近更新 更多