Есть ли способ иметь сортировку, используя 2 вычисленное значение двух полей в мангусте / mongodb? [Дубликат]

«Slicing» - это то, где вы назначаете объект производного класса экземпляру базового класса, тем самым теряя часть информации - часть его «нарезана».

Например,

class A {
   int foo;
};

class B : public A {
   int bar;
};

Итак, объект типа B имеет два элемента данных: foo и bar.

Тогда, если вы должны были написать это:

B b;

A a = b;

Затем информация в b о члене bar теряется в a.

4
задан Manny 25 July 2013 в 05:05
поделиться

1 ответ

MongoDB не позволяет вам вычислять поля с обычными запросами, однако вы можете сделать это с помощью структуры агрегации. Вы бы сделали это следующим образом:

myTestModel.aggregate(
    { $match: {} }, // your find query
    { $project: {
        op1: 1, // original fields
        op2: 1,
        total: { $add: ['$op1', '$op2' ] } // calculated field
    } },
    { $sort: { total: 1 } },

    // And then the normal Mongoose stuff:
    function (err, res) {
    }
);

См. Также: http://mongoosejs.com/docs/api.html#model_Model.aggregate

5
ответ дан Derick 22 August 2018 в 00:05
поделиться
  • 1
    Спасибо. Знаете ли вы, есть ли преимущество производительности при использовании этого по обычной функции .sort javascript? – Manny 26 July 2013 в 03:16
  • 2
    Не жалко, вам придется сравнить это в своей собственной среде. Я ожидаю, что он будет быстрее, поскольку он запускается в базе данных на C ++, а не в javascript. – Derick 26 July 2013 в 11:15
Другие вопросы по тегам:

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