Tôi đã gặp vấn đề tương tự và giải pháp của tôi là tạo bản đồ băm để thực hiện ánh xạ giữa mảng id của tôi (truy vấn của tôi) và mảng kết quả của tôi từ MongoDB.
Công việc phụ là duyệt qua các mảng kết quả và chèn, cho mỗi mục, cặp khóa-giá trị mới: khóa là ID và giá trị là đối tượng kết quả.
Sau đó, khi tôi muốn duyệt kết quả theo thứ tự như truy vấn của tôi, tôi có thể sử dụng hashmap để truy lục đối tượng chính xác. Không phân loại, và không có tùy chọn Mongo DB ưa thích.
Trong javascript nó sẽ là một cái gì đó như:
//The order you want
var queryIds = [ 8, 5, 3, 7 ];
//The results from MongoDB in an undefined order
var resultsFromMongoDB = [
{_id: 7, data: "d" },
{_id: 8, data: "a" },
{_id: 5, data: "b" },
{_id: 3, data: "c" },
];
//The function to create a hashmap to do the mapping
function createHashOfResults(results){
var hash = {};
for(var i = 0 ; i < results.length ; i++){
var item = results[i];
var id = item._id;
hash[ id ] = item;
}
return hash;
}
//Let's build the hashmap
var hash = createHashOfResults(resultsFromMongoDB);
//Now we can display the results in the order we want
for(var i = 0 ; i < queryIds.length ; i++){
var queryId = queryIds[i];
var result = hash[queryId];
console.log(result.data);
}
sẽ hiển thị này:
a
b
c
d
Bất kỳ giải pháp nào cho 2.6? – Sekai
giải pháp Python/PyMongo đơn giản: http://stackoverflow.com/a/40048951/304209 –
Kiểm tra [this] (http://stackoverflow.com/a/42293303/4440874) answer. –