2017-01-24 7 views
0

Я мангуст схемы, показанной нижеMongoDB отсортирован вставки заказа с помощью Mongoose в nodejs

var testdata = new Test({ 
     Product_Type: 10, 
     Product_ID: 'GPR', 
     attrib: [ 
        { 
         Year:2017, 
         Month: 3 
        }, 
        { 
         Year:2011, 
         Month: 3 
        }, 
        { 
         Year:2012, 
         Month: 3 
        }, 
        { 
         Year:2015, 
         Month: 3 
        } 
       ], 
    }); 

testdata.save(function(err, testdata) { 
    if(err){ 
     console.log('saving data error',err); 
    }else{ 
     res.status(200).json({'msg':'Data inserted'}); 
    } 

}); 

Когда я проверяю из MongoDB Attrib информации хранения, как оно дано в схеме, но я хочу ATTRIB магазин в MongoDB как показано ниже

{ 
     Year:2017, 
     Month: 3 
    }, 
    { 
     Year:2015, 
     Month: 3 
    }, 
    { 
     Year:2012, 
     Month: 3 
    }, 
    { 
     Year:2011, 
     Month: 3 
    } 

Я хочу atrrib информация будет храниться в порядке убывания по годам и месяцам

ответ

0

MongoDB не будет автоматически сортировать данные для вас.

Если вы хотите сохранить отсортированные данные, вам необходимо отсортировать его вручную, прежде чем вставлять его в Mongo. Для этого вы можете попробовать это -

var testdata = new Test({ 
    Product_Type: 10, 
    Product_ID: 'GPR', 
    attrib: [ 
       { 
        Year:2017, 
        Month: 3 
       }, 
       { 
        Year:2011, 
        Month: 3 
       }, 
       { 
        Year:2012, 
        Month: 3 
       }, 
       { 
        Year:2015, 
        Month: 3 
       } 
      ].sort(function(d1,d2) {if(d1.Year==d2.Year) return d2.Month - d1.Month; else return d2.Year - d1.Year;}) 
}); 

Этот метод сортировки сортирует ваши объекты в порядке убывания. Это всего лишь наивная реализация. Не стесняйтесь улучшать метод по своему усмотрению.

И если вы хотите хранить несортированные данные в Mongo и хотите, чтобы он был отсортирован Mongo, когда вы запрашиваете данные, вам нужно будет использовать оператор sort() в вашем запросе. Читайте об этом here.

+0

Дает синтаксическую ошибку, если я вставляю код ur –

+0

@sarojmandal Возможно, вы используете версию Node.js, которая не поддерживает функции стрелок. Проверьте отредактированный код. –

 Смежные вопросы

  • Нет связанных вопросов^_^