如果MongoDB不是空白,则推送字符串

时间:2015-04-13 09:29:24

标签: ruby-on-rails ruby mongodb

我正在使用mogodb聚合函数,我想只推送包含值的数据。我不希望结果集中有空白值

我写了以下代码

{ '$group' => { '_id' => '$user_id',
                'count' => { '$sum' => 1 },
                'row' => {
                  '$push' => {
                    'search_term' => '$search_term'
        }
    }
              }
},
{ '$match' => { '_id' => { '$nin' => ['', nil] } } },
{ '$sort' => { 'count' => -1 } }

在推送搜索字词时,我需要对上述代码进行哪些更改,删除空白值

1 个答案:

答案 0 :(得分:1)

尝试在 $group 管道阶段中使用$addToSet$cond运算符的组合。 $cond 运算符将使用如果row不为空的逻辑添加元素到search_term数组,则添加字段else添加布尔值{{1到数组。然后,您可以使用 false 阶段中的$setDifference过滤掉false值:

$project