สมมติว่าฉันเรียกใช้แบบสอบถามนี้ใน Mongoose:
Room.find({}, function(err,docs){
}).sort({date:-1});
มันใช้งานไม่ได้!
สมมติว่าฉันเรียกใช้แบบสอบถามนี้ใน Mongoose:
Room.find({}, function(err,docs){
}).sort({date:-1});
มันใช้งานไม่ได้!
คำตอบ:
การเรียงลำดับในพังพอนมีการพัฒนามากกว่าการเผยแพร่ดังกล่าวว่าบางคำตอบเหล่านี้จะไม่ถูกต้องอีกต่อไป จากการปล่อย Mongoose 4.1.xการเรียงลำดับจากมากไปน้อยในdate
ฟิลด์สามารถทำได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
Room.find({}).sort('-date').exec(function(err, docs) { ... });
Room.find({}).sort({date: -1}).exec(function(err, docs) { ... });
Room.find({}).sort({date: 'desc'}).exec(function(err, docs) { ... });
Room.find({}).sort({date: 'descending'}).exec(function(err, docs) { ... });
Room.find({}).sort([['date', -1]]).exec(function(err, docs) { ... });
Room.find({}, null, {sort: '-date'}, function(err, docs) { ... });
Room.find({}, null, {sort: {date: -1}}, function(err, docs) { ... });
สำหรับการจัดเรียงจากน้อยไปมากละเว้น-
คำนำหน้าในรุ่นสตริงหรือใช้ค่าของ1
, หรือasc
ascending
find
วิธีที่ผิดในเอกสาร Model.find
ดู
Module#property
#find
ดูเหมือนว่าไม่มีวิธีที่ง่ายในการนำทางหรือค้นหาเอกสาร การค้นหาพบผลตอบแทน 187 ผลลัพธ์
_id
ฟิลด์ ตัวอย่างเช่นในการรับข้อมูลล่าสุดคุณสามารถทำได้:await db.collection.findOne().sort({ _id: -1 });
คำตอบที่ถูกต้องคือ:
Blah.find({}).sort({date: -1}).execFind(function(err,docs){
});
รับการจัดการกับปัญหานี้ในวันนี้โดยใช้ Mongoose 3.5 (.2) และไม่มีคำตอบที่ช่วยฉันแก้ปัญหานี้ ข้อมูลโค้ดต่อไปนี้ทำการหลอกลวง
Post.find().sort('-posted').find(function (err, posts) {
// user posts array
});
คุณสามารถส่งพารามิเตอร์มาตรฐานใด ๆ ที่คุณต้องการfind()
(เช่นที่คำสั่งและฟิลด์คืน) แต่ไม่มีการโทรกลับ โดยไม่ต้องโทรกลับก็จะส่งกลับวัตถุแบบสอบถามที่คุณโซ่sort()
บน คุณต้องโทรfind()
อีกครั้ง (โดยมีหรือไม่มีพารามิเตอร์เพิ่มเติม - ไม่จำเป็นต้องมีเหตุผลด้านประสิทธิภาพ) ซึ่งจะช่วยให้คุณได้รับผลการตั้งค่าในการติดต่อกลับของคุณ
ฉันทำนี่:
Data.find( { $query: { user: req.user }, $orderby: { dateAdded: -1 } } function ( results ) {
...
})
สิ่งนี้จะแสดงสิ่งล่าสุดก่อน
Post.find().sort({date:-1}, function(err, posts){
});
ควรทำงานเช่นกัน
แก้ไข:
คุณสามารถลองใช้สิ่งนี้หากคุณได้รับข้อผิดพลาดsort() only takes 1 Argument
:
Post.find({}, {
'_id': 0, // select keys to return here
}, {sort: '-date'}, function(err, posts) {
// use it here
});
Error: sort() only takes 1 Argument
Post.find({}, {'_id': 0}).sort("-date").function(err, posts){});
วิธีแก้ปัญหาสั้น ๆ :
const query = {}
const projection = {}
const options = { sort: { id: 1 }, limit: 2, skip: 10 }
Room.find(query, projection, options).exec(function(err, docs) { ... });
ดูว่าสิ่งนี้จะช่วยให้> วิธีการเรียงลำดับพังพอน?
โปรดอ่านข้อมูลนี้> http://www.mongodb.org/display/DOCS/Sorting+and+Natural+Order
คุณสามารถเรียงลำดับตาม_id
ฟิลด์ ตัวอย่างเช่นหากต้องการรับระเบียนล่าสุดคุณสามารถทำได้
const mostRecentRecord = await db.collection.findOne().sort({ _id: -1 });
มันเร็วกว่ามากด้วยเพราะฉันยินดีมากกว่าที่จะเดิมพันว่าdate
ฟิลด์ของคุณไม่ได้รับการจัดทำดัชนี
Query#find([criteria], [callback])
ลายเซ็นคือ ฉันคิดว่าอาจมีการจับมือลับบางอย่างที่ระบุว่า "เกณฑ์" อาจมีได้ถึงสามข้อโต้แย้ง แต่มันแสดงประเภทเป็น "วัตถุ"