Tôi đang sử dụng MongoDB với Node.JS. Tôi có một bộ sưu tập chứa một ngày và các hàng khác. Ngày là một Date
đối tượng JavaScript .
Làm thế nào tôi có thể sắp xếp bộ sưu tập này theo ngày?
date
cột: stackoverflow.com/questions/5125521/ trên
Tôi đang sử dụng MongoDB với Node.JS. Tôi có một bộ sưu tập chứa một ngày và các hàng khác. Ngày là một Date
đối tượng JavaScript .
Làm thế nào tôi có thể sắp xếp bộ sưu tập này theo ngày?
date
cột: stackoverflow.com/questions/5125521/ trên
Câu trả lời:
Chỉ cần sửa đổi một chút để trả lời @JohnnyHK
collection.find().sort({datefield: -1}, function(err, cursor){...});
Trong nhiều trường hợp sử dụng, chúng tôi muốn có các bản ghi mới nhất được trả về (như đối với các bản cập nhật / chèn mới nhất).
Date
các đối tượng mà không có chức năng là không hoạt động đối với tôi trên 2.6.3.
collection.find().sort(...).exec(function(err, cursor) {})
Sắp xếp theo ngày không yêu cầu gì đặc biệt. Chỉ cần sắp xếp theo trường ngày mong muốn của bộ sưu tập.
Được cập nhật cho trình điều khiển gốc 1.4.28 node.js, bạn có thể sắp xếp tăng dần datefield
bằng cách sử dụng bất kỳ cách nào sau đây:
collection.find().sort({datefield: 1}).toArray(function(err, docs) {...});
collection.find().sort('datefield', 1).toArray(function(err, docs) {...});
collection.find().sort([['datefield', 1]]).toArray(function(err, docs) {...});
collection.find({}, {sort: {datefield: 1}}).toArray(function(err, docs) {...});
collection.find({}, {sort: [['datefield', 1]]}).toArray(function(err, docs) {...});
'asc'
hoặc 'ascending'
cũng có thể được sử dụng thay cho 1
.
Để loại giảm dần, sử dụng 'desc'
, 'descending'
hoặc -1
ở vị trí của 1
.
Câu trả lời của Sushant Gupta hơi lỗi thời và không còn hiệu quả nữa.
Đoạn mã sau nên như thế này ngay bây giờ:
collection.find({}, {"sort" : ['datefield', 'asc']} ).toArray(function(err,docs) {});
toArray
một phần.
collection.find().sort('date':1).exec(function(err, doc) {});
cái này làm việc cho tôi
đã giới thiệu https://docs.mongodb.org/getting-started/node/query/
nếu định dạng ngày của bạn là như thế này: 14/02/1989 ----> bạn có thể tìm thấy một số vấn đề
bạn cần sử dụng ISOdate như thế này:
var start_date = new Date(2012, 07, x, x, x);
-----> kết quả ------> ISODate ("2012-07-14T08: 14: 00.201Z")
Bây giờ chỉ cần sử dụng truy vấn như thế này:
collection.find( { query : query ,$orderby :{start_date : -1}} ,function (err, cursor) {...}
đó là nó :)
Với cầy mangut, tôi không thể sử dụng 'toArray' và đã gặp lỗi: TypeError: Collection.find(...).sort(...).toArray is not a function.
Hàm toArray tồn tại trên lớp Con trỏ từ trình điều khiển NodeJS gốc MongoDB ( tham chiếu ).
Đồng thời sắp xếp chỉ chấp nhận một tham số, vì vậy bạn không thể truyền chức năng của mình vào bên trong nó.
Điều này làm việc cho tôi (như được trả lời bởi Emil ):
collection.find().sort('-date').exec(function(error, result) {
// Your code
})