MongoDB - 基于条件的多个查询

时间:2018-02-20 19:33:17

标签: mongodb mongodb-query aggregation-framework

我的查询看起来像这样。

export class Component implements {
    @ViewChild('tt') tt: DataTable;
    myList: any;

    getList(){
    Promise.resolve(...)
        .then(res => {
                this.myList = res;
                this.tt.filter('created', 'state', 'equals');
              });
            }
     }

我想将此查询更新为此类内容。

  1. 搜索员工集合,其中name = param和tenure = true
  2. 如果存在数据,则按经验对结果进行排序,并将结果限制为100
  3. 如果未找到任何结果,则使用标题搜索同一集合,无需对结果进行排序。
  4. 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您需要在查询中应用条件排序。另一个重要的事情是$ regex的值必须在string(“”)中。你无法通过

$regex: User  

你需要用字符串传递它。

db.hotspot.aggregate(
[{
        "$match": {
            "$and": [{
                    "$or": [{
                            name: {
                                "$regex": "SD",
                                "$options": "i"
                            }
                        },
                        {
                            radius: {
                                "$regex": "250",
                                "$options": "i"
                            }
                        },
                    ]
                },
                {
                    infinite: false
                }
            ]
        }
    },
    {
        $project: {
            sort: {
                $cond: {
                    if: {
                        $eq: ["$radius", 250]
                    },
                    then: "$name",
                    else: "$_id"
                }
            }
        }
    },
    {
        $sort: {
            sort: 1
        }
    }
])