Это коллекция 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; сортировка может быть выполнена отдельно, вы можете сначала вставить новый вспомогательный массив, а затем использовать эту команду для сортировки.
Пожалуйста, попробуйте это и сообщите нам, если это сработало!
см. 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)