Mongodb和排序子数组 [英] Mongodb and sorting sub array

查看:78
本文介绍了Mongodb和排序子数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

不确定是否可以做到这一点,所以我想问一下.

Not sure if this can be done, so thought I would ask.

我有以下mongodb/s

I have the following mongodb/s

{
 "store":"abc",
 "offers":[{
    "spend":"100.00",
    "cashback":"10.00",
    "percentage":"0.10"
  },{
    "spend":"50.00",
    "cashback":"5.00",
    "percentage":"0.10"
  }]
}

 {
     "store":def",
     "offers":[{
        "spend":"50.00",
        "cashback":"2.50",
        "percentage":"0.05"
      },{
        "spend":"20.00",
        "cashback":"1.00",
        "percentage":"0.05"
      }]
    }

 {
         "store":ghi",
         "offers":[{
            "spend":"50.00",
            "cashback":"5.00",
            "percentage":"0.10"
          },{
            "spend":"20.00",
            "cashback":"2.00",
            "percentage":"0.10"
          }]
        }

排序必须按百分比.

我不确定是否需要使用另一个PHP函数的usort来做到这一点,还是不确定Mongodb是否足够聪明来完成我想做的事情.

I am not sure if I would have to use usort of another PHP function to do it, or if Mongodb is smart enough to do what I want to do.

推荐答案

令人惊讶的是,mongodb可以做到这一点:

Amazingly, yes, mongodb can do this:

// Sort ascending, by minimum percentage value in the docs' offers array.
db.collection.find({}).sort({ 'offers.percentage': 1 });

// Sort descending, by maximum percentage value in the docs' offers array.
db.collection.find({}).sort({ 'offers.percentage': -1 });

这篇关于Mongodb和排序子数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆