は、ネストされた配列をソートしてみてください。ノード+ MongoDBの+ソートネストされた配列
monogodbで例JSON。
{
"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
}
私は結果が注文に基づいて表示されるはずです。
items.orderここでの可能なIDを渡すために。 Idを取得すると、それぞれのIdの結果が表示されます。それ以外の場合はすべてのリストを表示する必要があります。
私は自分のノードのコードを添付:
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);
});
});
私は、彼らが集約関数を使用して、いくつかの例を見つけました。
collection.aggregate([
{$unwind: "$answers"},
{$sort: {"item.order":1}},
{$group: {_id:"$_id", answers: {$push:"$answers"}}}
]);
ここで少し混乱します。
'あなたは私に美貌を示唆しているaggregate'。何が悪かったのか? – hyades
上記のコードは私には役に立たない。 ==== >>>> collection.aggregate( {$ unwind: "$ answers"}、 {$ sort:{"item.order":1}}、 {$ group:{_id: "$ _id "、answers:{$ push:" $ answers "}}} ]); – RSKMR