草庐IT

Mongoose-auth

全部标签

node.js - MongoDB、Mongoose - 获取 10k+ 文档时查询缓慢

我有一个MongoDB数据库,集合中有10-12k个文档,当我尝试获取所有文档时遇到非常慢的查询,如下所示:Sales.find().where('author').equals(author).where('date').gt(startDate.unix()).lt(endDate.unix()).exec(function(err,results){callback();});此查询获取大约10.5k文档,执行时间为1000-1300毫秒。我尝试删除“where”条件-它只会让它变慢(获取更多文档?)。问题是来自Mongoose、MongoDB、JavaScript还是Node?

javascript - 如何在 Mongoose 中验证电子邮件

我是Mongoose的新手...我在下面有一个代码片段。如果我想在保存之前检查电子邮件中​​@符号后面的内容,我将如何进行验证?varuser=newUser({firstName:String,lastName:String,email:String,regDate:[Date]});user.save(function(err){if(err)returnhandleError(err);}) 最佳答案 您可以使用正则表达式。看看这个问题:ValidateemailaddressinJS?你可以试试这个user.path('em

node.js - 为什么 Mongoose 打开两个连接?

这是Mongoose快速指南中的一个简单文件mongoose.jsvarmongoose=require('mongoose');mongoose.connect('mongodb://localhost/Chat');varuserSchema=mongoose.Schema({name:String});varUser=mongoose.model('User',userSchema);varuser=newUser({name:'Andy'});user.save();//ificommentitmongoosewillkeeponeconnectionUser.find({},

javascript - Mongoose ,检查对象数组中是否存在值

我有一个集合:我想使用$inoperatorPerson={name:String,members:[{id:String,email:String}...{}]}我目前使用的是:Person.find({members:{"$in":[id1]}})但我已经知道这个缺陷:如果成员数组像Members:[id1,id2,...id3]那样,该方法就可以工作。但它是一个对象数组。那么我该如何解决呢? 最佳答案 $elemMatch可以与ArraysofEmbeddedDocuments一起使用:在您的情况下,您可以尝试:Person.

mongodb - 使用 Mongoose 指定索引名称

定义Mongoose模式时,通常需要谨慎指定应存在哪些索引。也就是说,在许多情况下,我们希望控制所创建索引的名称,尤其是当这些索引是复合的以便可以理解时。确实,在创建某些索引时,需要明确指定索引名称,以避免超过indexnamelengthlimit。.自ensureIndex在模式中定义的索引上(默认情况下)被调用,控制ensureIndex创建的索引名称的适当语法是什么?我认为这对于字段级索引语法是不可能的,但它肯定可用于模式级索引吗?varExampleSchema=newSchema({a:String,b:String,c:Date,d:Number,e:{type:[Str

node.js - Mongoose 多重深度填充

比如说,我有Manager模式:{name:{type:String},clients:[{type:Mongoose.Schema.ObjectId,ref:'Client'}]}而且,我有Client模式:{name:{typeString},cars:[{type:Mongoose.Schema.ObjectId,ref:'Car'}],houses:[{type:Mongoose.Schema.ObjectId,ref:'House'}]}还有Car和House(它们的结构对于这个问题并不重要。我如何深入填充多个Client的字段在单个.populate()调用中?我尝试了什么

Node.js + Mongoose 在本地工作,但不能在 Heroku 上工作

这是我在Heroku上运行的node.js文件。它在本地完美运行,但是当我将它推送到Heroku时,不会创建数据库集合,也不会抛出任何错误。最终,我只是想让它在Heroku上运行时实际创建连接。谢谢。varmongoose=require('mongoose'),db_url=process.env.MONGOHQ_URL||"mongodb://john:@staff.mongohq.com:10053/app3305538",db=mongoose.connect(db_url),Schema=mongoose.Schema;//MongooseDBTestvarMsgSchema

node.js - Mongoose 查询 : compare two values on same document

我如何使用Mongoose查询Mongo集合以查找在它们自己的两个属性之间具有特定关系的所有文档?例如,我如何查询一个characters集合来找到所有那些currentHitPoints值小于它们的maximumHitPoints值的字符?或者所有那些currentPledgedMoney少于他们的pledgeGoal的项目?我试过这样的事情:mongoose.model('Character').find({player:_currentPlayer}).where('status.currentHitpoints').lt('status.maximumHitpoints').e

javascript - 如何在 Mongoose 中验证数组并同时验证其元素

我有这个架构,我在其中验证数组book的元素,但我不知道如何验证数组本身。varDictionarySchema=newSchema({book:[{1:{type:String,required:true},2:String,3:String,c:String,p:String,r:String}]});例如,我想按要求放置书籍数组。有帮助吗? 最佳答案 您可以使用customvalidator去做这个。只需检查数组本身是否为空:varmongoose=require('mongoose'),Schema=mongoose.Sch

javascript - 使用 async.each 异步循环 mongoose 集合

我在我的node.js程序上使用acync.series。我正在尝试使用async.each异步循环mongoose集合。到目前为止,这是代码:varasync=require('async');varmongoose=require('mongoose');varusersData;async.series([function(callback){mongoose.connect("mongodb://localhost/****");vardb=mongoose.connection;db.on('error',console.error.bind(console,'connect