Как создать где условия динамически в Knex.js?

Это коллекция ArrayTest, созданная с вашими примерными данными:

{
        "_id" : "test",
        "TestArr" : [
                [ 1, 7 ],
                [ 2, 3 ],
                [ 3, 4 ]
        ]
}

Входной агрегатный запрос:

db.ArrayTest.aggregate([
    {
        $match : { "_id" : "test" }
    },
    {
        $unwind : "$TestArr"
    },
    {
        $sort : { "TestArr.1" : 1 }
    },
    {
        $group:{
            _id : "$_id",
            TestArr : {$push:"$TestArr"}
        }
    }
])

Здесь мы сначала используем этап $unwind и затем [[6]]

{
    "_id" : "test",
    "TestArr" : [ 
        [ 2, 3 ],
        [ 3, 4 ],
        [ 1, 7 ]
    ]
}

Это отсортированный массив.

Вывод:

{
    "_id" : "test",
    "TestArr" : [ 
        [ 2, 3 ],
        [ 3, 4 ],
        [ 1, 7 ]
    ]
}

Если обновление & amp; сортировка может быть выполнена отдельно, вы можете сначала вставить новый вспомогательный массив, а затем использовать эту команду для сортировки.

Пожалуйста, попробуйте это и сообщите нам, если это сработало!

1
задан Drausio Donini 20 January 2019 в 06:01
поделиться

1 ответ

см. https://knexjs.org/#Builder-where

, попробуйте это:

.where((builder) => {

    if (req.query.customerId)
        builder.where('wo.customerId', req.query.customerId);

    if (req.query.companyId)
        builder.where('wo.companyId', req.query.companyId);

    if (req.query.invoiceId)
        builder.where('wo.invoiceId', req.query.invoiceId);

    if (req.query.open)
        builder.whereNull('wo.finishedAt');

    // so on..

});

вместо

.where(conditions)
0
ответ дан vedsmith92 20 January 2019 в 06:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: