账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mongo中如何根据某个字段的多个值来对另一个字段进行统计?
    27
    0

    数据库中

    { "_id" : ObjectId("5a66ef690fe318d00bbaf106"), "sex" : "man", "name" : "a" }
    { "_id" : ObjectId("5a66ef780fe318d00bbaf107"), "sex" : "man", "name" : "b" }
    { "_id" : ObjectId("5a66ef7d0fe318d00bbaf108"), "sex" : "man", "name" : "c" }
    { "_id" : ObjectId("5a66ef820fe318d00bbaf109"), "sex" : "man", "name" : "d" }
    { "_id" : ObjectId("5a66ef8c0fe318d00bbaf10a"), "sex" : "woman", "name" : "e" }
    { "_id" : ObjectId("5a66ef8e0fe318d00bbaf10b"), "sex" : "woman", "name" : "f" }
    { "_id" : ObjectId("5a66ef910fe318d00bbaf10c"), "sex" : "woman", "name" : "g" }
    { "_id" : ObjectId("5a66ef930fe318d00bbaf10d"), "sex" : "woman", "name" : "h" }
    { "_id" : ObjectId("5a66ef950fe318d00bbaf10e"), "sex" : "woman", "name" : "i" }
    { "_id" : ObjectId("5a66ef970fe318d00bbaf10f"), "sex" : "woman", "name" : "j" }
    { "_id" : ObjectId("5a66efab0fe318d00bbaf110"), "sex" : "no_know", "name" : "z" }
    { "_id" : ObjectId("5a66efae0fe318d00bbaf111"), "sex" : "no_know", "name" : "x" }
    { "_id" : ObjectId("5a66efb00fe318d00bbaf112"), "sex" : "no_know", "name" : "c" }

    期望得到的结果
    ===>

    {"sex": "man", "sum": 4},
    {"sex": "woman", "sum": 6} // 不用统计sex === no_know的

    好像是使用group by, 找了半天没找到对应的。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 无妄ヘ 普通会员 1楼

      在MongoDB中,你可以使用aggregate()函数来根据某个字段的多个值来对另一个字段进行统计。以下是一个例子:

      javascript db.collection.aggregate([ { $match: { field1: { $gt: 10 } } }, { $group: { _id: "$field2", count: { $sum: 1 } } } ])

      在这个例子中,我们首先使用$match操作符来筛选出field1大于10的文档。然后,我们使用$group操作符来对field2进行分组,并计算每个组中的文档数量。

      注意,$match操作符和$group操作符可以同时使用,它们可以一起处理多个条件和聚合操作。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部