是的,您可以指定.findOne()
的行爲,如本機驅動程序文檔中所示。唯一的區別是,在貓鼬的實現中,「選項」文件必須是是傳遞給該方法的「第三」參數。
所以,你可以提供一個「分類」規範此爲顯示在可用的選項:
Queue.findOne({ },null,{ "sort": { "_id": -1 } },function(err,doc) {
只是爲了更多的信息,你可以在MongoDB的外殼採用以下做到這一點,利用$orderby
查詢選項:
db.collection.findOne({ "$query": { }, "$orderby": { "_id": -1 } })
另外,.findOne()
方法可以只返回一個文件,但它確實是就在.find()
的包裝,因此所有的修飾符適用。包裝僅在返回的遊標上調用.next()
,返回文檔並丟棄遊標。
此不再示例示出了其中本可以應用不同的方法:
var async = require('async'),
mongoose = require('mongoose'),
Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/sequence');
var queueSchema = new Schema({
name: String,
same: { type: String, default: "same" }
});
var Queue = mongoose.model("Queue", queueSchema);
var count = 0;
async.series(
[
// Remove any documents
function(callback) {
Queue.remove(function(err) {
if (err) throw err;
callback();
});
},
// Insert some new ones
function(callback) {
async.eachSeries(
["one","two","three"],
function(item,callback) {
var queue = new Queue({ name: item });
queue.save(function(err,doc) {
if (err) throw err;
console.dir(doc);
callback(err,doc);
});
},
function(err) {
callback(err);
}
);
},
function(callback) {
async.whilst(
function() { return count < 2 },
function(callback) {
count++
async.series(
[
// findOne is just the first one
function(callback) {
Queue.findOne({ "same": "same" },function(err,doc) {
if (err) throw err;
console.log("FindOne:\n%s", doc);
callback();
});
},
// Or is sorted
function(callback) {
Queue.findOne(
{ "same": "same" },
null,
{ "sort": { "_id": -1 } },
function(err,doc) {
if (err) throw err;
console.log("FindOne last:\n%s", doc);
callback();
}
);
},
// find is ordered but not singular
function(callback) {
async.eachSeries(
["first","last"],
function(label,callback) {
var direction = (label == "first") ? 1 : -1;
var query = Queue.find({ "same": "same" })
.sort({ "_id": direction })
.limit(1);
query.exec(function(err,docs) {
if (err) throw err;
console.log(".find() %s:\n%s", label, docs[0]);
callback();
});
},
function(err) {
callback();
}
);
},
// findAndModify takes a sort
function(callback) {
Queue.findOneAndUpdate(
{ "same": "same" },
{ "$set": { "same": "different" } },
{ "sort": { "_id": -1 } },
function(err,doc) {
if (err) throw err;
console.log("findOneAndUpdate:\n%s", doc);
callback();
}
);
}
],function(err) {
callback();
}
);
},
function(err) {
callback();
}
);
}
],function(err) {
console.log("done");1
mongoose.disconnect();
}
);
的MongoDB保持在DB對象_id時間戳,它自然排序按日期 – saj