对于Mongoose:查找最新文档感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍mongodb查找文档,并为您提供关于ExpresscookieSession和Mongoose:如何使requ
对于Mongoose:查找最新文档感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍mongodb查找文档,并为您提供关于Express cookieSession和Mongoose:如何使request.session.user成为Mongoose模型?、mongodb / mongoose findMany-查找ID在数组中列出的所有文档、mongoDB / mongoose:唯一,如果不为null、MongoDB / Mongoose:在等待查询之前获取查询的文档数的有用信息。
本文目录一览:- Mongoose:查找最新文档(mongodb查找文档)
- Express cookieSession和Mongoose:如何使request.session.user成为Mongoose模型?
- mongodb / mongoose findMany-查找ID在数组中列出的所有文档
- mongoDB / mongoose:唯一,如果不为null
- MongoDB / Mongoose:在等待查询之前获取查询的文档数
Mongoose:查找最新文档(mongodb查找文档)
我有Mongoose架构,其中有一个天属性
Math.floor((new Date()).getTime() / (24 * 3600 * 1000))
我想查找输入的最后一天的数据,所以说今天就是16085
我要查找输入的最后一天。或者说另一种说法。什么是day
属性小于等于16085
但大于所有其他文档的文档day
呢16085
?
或另一种方式
day
属性小于等于的所有文档集中的最大元素是什么16085
然后遍历我所有的文档,我该怎么做呢?
答案1
小编典典在外壳中将是:
db.test.find({day: {$lt: 16085}}).sort({day: -1}).limit(1)
查找所有day
小于16085 的文档,对它们进行day
降序排序,然后采用第一个。
在Mongoose中,它将类似于:
MyModel.find({day: {$lt: 16085}}).sort({day: -1}).limit(1).exec((err, docs) => { ... });
Express cookieSession和Mongoose:如何使request.session.user成为Mongoose模型?
创建新用户帐户后,我创建了newUser,这是一个Mongoose模型实例,如下所示:
_events: Object
errors: undefined
isNew: false
save: function () {
arguments: null
caller: null
_doc: Object
name: 'Joe Smith'
...
该对象的实际数据位于 _doc 属性中,尽管存在getter和setter,所以您可以运行:
user.name = 'Jane Doe'
这样就可以了。我跑:
request.session.user = newUser;
将用户保存到会话。到目前为止,一切都很好。
但是,在后续请求中,request.session.user似乎只是_doc中的内容。例如:
name: 'Joe Smith'
很好,但这意味着我无法运行例如 request.session.user.save() 来保存更改。
我可以简单地制作一些中间件来查找与数据关联的用户。但是我想了解更多有关Express和Mongoose在这里做什么的信息。
如何使request.session.user成为Mongoose模型?
更新 :我当前的中间件黑客:
// Use as a middleware on routes which need users
// TODO: only needed due to request.session.user being saved weirdly
var rehydrateUser = function(request,response,next) {
if ( request.session.user ) {
var hydrated = request.session.user.save
if ( ! hydrated ) {
console.log('Rehydrating user...');
models.User.findOne({ somefield: request.session.user.somefield },function (err,user) {
if ( err ) {
request.session.error = 'User not found in DB!';
request.redirect('/');
} else {
request.session.user = user;
console.log('Rehydrated user! All repos already being monitored.');
next();
}
})
} else {
next();
}
} else {
console.log('No user in session')
next();
}
}
mongodb / mongoose findMany-查找ID在数组中列出的所有文档
我有一个_ids数组,我想相应地获取所有文档,最好的方法是什么?
就像是 …
// doesn't work ... of course ...
model.find({
'_id' : [
'4ed3ede8844f0f351100000c','4ed3f117a844e0471100000d','4ed3f18132f50c491100000e'
]
},function(err,docs){
console.log(docs);
});
该数组可能包含数百个_id。
mongoDB / mongoose:唯一,如果不为null
我想知道是否有办法强制唯一的收集条目, 但前提是条目不为null 。e示例架构:
var UsersSchema = new Schema({ name : {type: String, trim: true, index: true, required: true}, email : {type: String, trim: true, index: true, unique: true}});
在这种情况下,不需要’email’,但是如果保存了’email’,我想确保该条目是唯一的(在数据库级别)。
空条目的值似乎为’null’,因此每个条目都不会通过’unique’选项使电子邮件崩溃(如果有其他用户没有电子邮件)。
现在,我正在应用程序级别解决它,但希望保存该数据库查询。
谢谢
答案1
小编典典从MongoDB v1.8 +开始,您可以通过sparse
在定义索引时将选项设置为true 来获得确保唯一值但允许多个文档不包含字段的预期行为。如:
email : {type: String, trim: true, index: true, unique: true, sparse: true}
或在外壳中:
db.users.ensureIndex({email: 1}, {unique: true, sparse: true});
需要注意的是独特的,稀疏索引仍然不允许多个文档与email
同一个字段 值 的null
,只有多个文档 没有 一个email
领域。
参见http://docs.mongodb.org/manual/core/index-
sparse/
MongoDB / Mongoose:在等待查询之前获取查询的文档数
如何解决MongoDB / Mongoose:在等待查询之前获取查询的文档数?
我使用.skip()和.limit()来分页我的MongoDB查询。但是我想在通过这些功能剪切文档之前先阅读所有文档。
- 是的,我可以等待查询并读取其长度。但是然后我将等待两次相同的查询。
- 我尝试使用estimatedDocumentCount()函数,但是看不到任何结果
致谢,谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
关于Mongoose:查找最新文档和mongodb查找文档的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Express cookieSession和Mongoose:如何使request.session.user成为Mongoose模型?、mongodb / mongoose findMany-查找ID在数组中列出的所有文档、mongoDB / mongoose:唯一,如果不为null、MongoDB / Mongoose:在等待查询之前获取查询的文档数的相关知识,请在本站寻找。
本文标签: