- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我专门使用 mongoose,尽管我认为这没有那么重要。例如,假设我有一个名为 MongoQueue 的集合,我向该队列添加了一些人。
`MongoQueue.save {function(err, firstPerson) {
if (err) console.log(err);
MongoQueue.save {function(err, secondPerson) {
if (err) console.log(err);
MongoQueue.save {function(err, thirdPerson) {
if (err) console.log(err);
}}}`
如何检索最先保存到 MongoQueue 的人?或者.... mongoDB 的 findOne() 方法如何缩小搜索范围?我可以指定 findOne() 的行为来选择集合中最旧的文档吗?或者我必须对集合进行排序(这是最后的手段),如果是这样,我将如何按时间戳排序?
最佳答案
是的,您可以指定 .findOne()
的行为如 native 驱动程序文档中所示。唯一的区别是在 Mongoose 实现中,“选项”文档必须是传递给方法的“第三个”参数。
因此您可以为此提供“排序”规范,如可用选项所示:
Queue.findOne({ },null,{ "sort": { "_id": -1 } },function(err,doc) {
只是为了获得更多信息,您可以在 MongoDB shell 中使用以下命令执行此操作,使用 $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();
}
);
关于javascript - findOne 可以匹配第一个还是最后一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24792758/
我有一个简单的 node.js 代码,它使用 mongoose,它在保存时工作但不检索。 .save() 有效,但 .findOne() 无效。 mongoose = require('mongoos
const categorySlug = req.query.category; const category = await Category.findOne({ slug: categorySlu
我正在使用 Waterline通过 Sails 查询 MySQL 数据库。我找到了 2 种方法。 不知道哪个更好? 顺便问一下,如何处理这两种情况的错误? 1. Model.findOne().whe
我可以在没有数据匹配的情况下将 findOne 查询结果从 NULL 更改为空对象吗?如果是,如何? 先感谢您 最佳答案 我认为此选项的 Sequelize 中没有插入配置。 您可以为模型访问层创建一
我将 NestJS 框架与 TypeORM 和 PostgreSQL 结合使用。假设我有一个简单的 User 实体,它只有两个属性:id 和 name @Entity() class User {
我将 NestJS 框架与 TypeORM 和 PostgreSQL 结合使用。假设我有一个简单的 User 实体,它只有两个属性:id 和 name @Entity() class User {
I'm practicing by following a React, MUI, Nodejs, CRUD project. Currently am able to get the regi
我正在尝试使用 Sequelize 和 mysql db 创建一个模型。我正在尝试发布到“/students/register”,它一直给我一个错误,说 findOne 不是一个函数。我尝试要求我的
有没有可能做findOne在mongodb中解释? 目前我已经尝试过: db.coll.findOne({query}).explain() db.collection.findOne({query}
在我的应用程序中,我尝试使用 .findOne 但出现错误。这是我的错误:- TypeError: User.findOne is not a function at Strategy._verify
我有一个 user.js 文件,用于我网站中的用户模型。这是用户架构: var UserSchema = mongoose.Schema({ username: { type:
我正在从 SQL 迁移到 MonboDB,并且我正在尝试学习基础知识。但到目前为止,我一直在努力解决一个“Select 语句” 假设我有这样的收藏 文档1 { "_id" : "id1", "
login: function (req, res) { var username = req.param('username'); var password = re
潜在客户和客户都是集合。为什么 Leads.findOne() 返回一个对象?它应该像 Customers.findOne() 那样返回一个 Document。 我使用的是 Meteor 1.2.1。
我的 mongodb 集合中的 ids 格式如下 "_id" : NumberLong("502434721406525440"), 我正在尝试执行 mongo 的 findOne 方法来检索具有
我专门使用 mongoose,尽管我认为这没有那么重要。例如,假设我有一个名为 MongoQueue 的集合,我向该队列添加了一些人。 `MongoQueue.save {function(err,
我是第一次使用 Mongodb,我遇到了一个非常奇怪的错误。我有一个“游戏”集合,但我无法使用 _id 查询对其进行搜索。 我直接在 mongo shell 上尝试,结果如下: > db.games.
我的问题是:有一组用户。我试图找到 _id=xxx 的用户是否有 somevalue > 5。 我想知道,使用 find(...).count() > 0 或 findOne(...) != null
我在使用 TypeORM 执行嵌套查找查询时遇到一些问题。这是基本代码: const { completionId } = req?.params; const user = req.
我尝试使用护照添加 Facebook 登录信息,但遇到以下错误: 类型错误:无法在 Strategy._verify 中调用未定义的方法“findOne” 我的 app.js 文件中需要 models
我是一名优秀的程序员,十分优秀!