Ich benutze Knoten mit mongodb.Ich versuche geschachtelte Array zu sortieren.Node + Mongodb + sortierte verschachtelte Array
Beispiel json in Monogodb.
{
"items": [
{
"name": "A",
"order": 3
}, {
"name": "B",
"order": 2
}, {
"name": "C",
"order": 1
}, {
"name": "D",
"order": 4
}
],
"name": "Test",
"_id" : 01245678913
}
{
"items": [
{
"name": "A",
"order": 3
}, {
"name": "B",
"order": 2
}, {
"name": "C",
"order": 1
}, {
"name": "D",
"order": 4
}
],
"name": "Test",
"_id" : 098765432134
}
Ich erwarte Ergebnis sollte basierend auf Bestellung angezeigt werden. items.order
Hier möglich ID übergeben. Wenn "Id erhalten" angezeigt wird, wird das Ergebnis für die jeweilige ID angezeigt. Ansonsten müssen alle Listen angezeigt werden.
angebracht ich meinen Knoten Code:
router.post('/get', function(req, res, next) {
var results = {
resp : {},
id : null,
query : {}
};
if (!(typeof req.body['id'] === 'undefined' || req.body['id'] === null)) {
results.id = req.body['id'];
}
Q(results).then(function(results) {
var deferred = Q.defer();
var collection = mongoUtil.list;
if (results.id != null) {
results.query._id = ObjectId(results.id);
}
collection.find(results.query).toArray(function(err, lists) {
if (!err && lists.length > 0) {
results.resp.lists = lists;
deferred.resolve(results);
} else {
results.resp.message = 'No List';
results.resp.debug = err;
deferred.reject(results);
}
});
return deferred.promise;
}).then(function(results) {
results.resp.message = 'Result found';
results.resp.status = 'Success';
res.send(results.resp);
}).fail(function(results) {
results.resp.status = 'Error';
res.send(results.resp);
});
});
ich einige Beispiele fand sie Aggregat-Funktion.
collection.aggregate([
{$unwind: "$answers"},
{$sort: {"item.order":1}},
{$group: {_id:"$_id", answers: {$push:"$answers"}}}
]);
Hier ein bisschen verwirrend.
Die 'aggregate' Sie sind darauf hindeutet, sieht gut für mich. Was schief gelaufen ist? – hyades
Der obige Code funktioniert nicht für mich. ==== >>>> collection.aggregate ([ {$ abwickeln: "$ antworten"}, {$ sort: {"item.order": 1}}, {$ group: {_id: "$ _id ", Antworten: {$ push:" $ answers "}}} ]); – RSKMR