myModel.find({}, function(err, items) {
console.log(items.length); // Big number
});
मैं लौटी हुई वस्तुओं को केवल उन नवीनतम 10 वस्तुओं तक कैसे सीमित कर सकता हूं जिन्हें डाला गया था?
myModel.find({}, function(err, items) {
console.log(items.length); // Big number
});
मैं लौटी हुई वस्तुओं को केवल उन नवीनतम 10 वस्तुओं तक कैसे सीमित कर सकता हूं जिन्हें डाला गया था?
जवाबों:
नवीनतम मानस में (लेखन के समय 3.8.1), आप दो काम अलग-अलग तरीके से करते हैं: (1) आपको सॉर्ट करने के लिए एक तर्क पास करना होगा (), जो कि एक अड़चन या सिर्फ एक बाधा होना चाहिए, और (2) ) execFind () चला गया है, और इसके स्थान पर निष्पादन () किया गया है। इसलिए, 3.8.1 मूंग के साथ आप ऐसा करेंगे:
var q = models.Post.find({published: true}).sort({'date': -1}).limit(20);
q.exec(function(err, posts) {
// `posts` will be of length 20
});
या आप इसे उसी तरह एक साथ चेन कर सकते हैं:
models.Post
.find({published: true})
.sort({'date': -1})
.limit(20)
.exec(function(err, posts) {
// `posts` will be of length 20
});
इस तरह, .limit () का उपयोग कर:
var q = models.Post.find({published: true}).sort('date', -1).limit(20);
q.execFind(function(err, posts) {
// `posts` will be of length 20
});
models.Post.find({published: true}, {sort: {'date': -1}, limit: 20}, function(err, posts) {
// `posts` with sorted length of 20
});
मापदंडों का पता लगाएं
पैरामीटर पाते हैं कि फ़ंक्शन निम्नानुसार हैं:
«Object»
।«Object|String»
वैकल्पिक क्षेत्रों में लौटने के लिए, देखें Query.prototyp.select ()«Object»
वैकल्पिक देखें Query.prototyp.setOptions ()«Function»
कैसे सीमित करें?
const Post = require('./models/Post');
Post.find(
{ published: true },
null,
{ sort: { 'date': 'asc' }, limit: 20 },
function(error, posts) {
if (error) return `${error} while finding from post collection`;
return posts; // posts with sorted length of 20
}
);
अधिक जानकारी
Mongoose आपको अपने संग्रह को विभिन्न तरीकों से क्वेरी करने की अनुमति देता है जैसे: आधिकारिक दस्तावेज़ीकरण
// named john and at least 18
MyModel.find({ name: 'john', age: { $gte: 18 }});
// executes, passing results to callback
MyModel.find({ name: 'john', age: { $gte: 18 }}, function (err, docs) {});
// executes, name LIKE john and only selecting the "name" and "friends" fields
MyModel.find({ name: /john/i }, 'name friends', function (err, docs) { })
// passing options
MyModel.find({ name: /john/i }, null, { skip: 10 })
// passing options and executes
MyModel.find({ name: /john/i }, null, { skip: 10 }, function (err, docs) {});
// executing a query explicitly
var query = MyModel.find({ name: /john/i }, null, { skip: 10 })
query.exec(function (err, docs) {});
// using the promise returned from executing a query
var query = MyModel.find({ name: /john/i }, null, { skip: 10 });
var promise = query.exec();
promise.addBack(function (err, docs) {});
किसी कारण से मुझे प्रस्तावित उत्तरों के साथ काम करने के लिए यह नहीं मिला, लेकिन मैंने चयन के लिए एक और भिन्नता पाई, जो मेरे लिए काम की:
models.Post.find().sort('-date').limit(10).select('published').exec(function(e, data){
...
});
क्या एपी शायद बदल गया है? मैं संस्करण 3.8.19 का उपयोग कर रहा हूं
... इसके अतिरिक्त उपयोग करना सुनिश्चित करें:
mongoose.Promise = Promise;
यह मूल ES6 वादे के लिए आम वादे को निर्धारित करता है। इस अतिरिक्त के बिना मुझे मिला:
DeprecationWarning: Mongoose: mpromise (mongoose का डिफ़ॉल्ट वादा पुस्तकालय) पदावनत है, इसके बजाय अपने स्वयं के वादे पुस्तकालय में प्लग करें: http://mongoosejs.com/docs/promises.html