草庐IT

mongoose-dbref

全部标签

node.js - Mongoose 从其他领域创建自定义_id

我知道Mongoose会自动使用ObjectID填充_id字段(如果未提供),并且您可以在构建模型实例时覆盖_id。我想要的:以透明的方式从其他字段创建_id。我想在创建模型实例时省略_id字段,然后调用一个函数来填充它。这个函数应该在Schema级别声明,使用模型的人不知道_id是由函数而不是Mongoose填充的。我是否遗漏了Schema构造函数的钩子(Hook)或参数?Mongoose3.0.x让我们更具体一些。想象一个BlogPost,我想通过添加标题来创建漂亮的URL。为了将slug映射到Mongo对象,我对slug进行哈希处理并将其转换为ObjectID以利用它的优势。现在

mongodb - 在 mongoose 中使用 addtoset 命令添加多个相同的文档

我的模式是varUserQuizSchema=mongoose.Schema({uid:{type:ObjectId,required:true,index:true},answer:[{content:String,qid:ObjectId,time:Date}],});在此架构中,“uid”表示用户标识符,而“answer”数组存储学生已回答的答案。在每个答案中,qid与问题ID相关,'content'是学生的真实答案,'time'是答案的修改时间戳。这里我使用mongoose将新答案插入到数组中functionupdateAnswer(uid,question_id,answer

node.js - 设置选择 : false to subdocuments array at mongoose

在mongoose上,有一个很好的选项可以默认使用select:false选项从查询中删除一些字段。例如:varFileSchema=newSchema({filename:String,filesize:Number,base64Content:{type:String,select:false}});[...]FileModel.find({},function(err,docs){//docswillgivemeanarrayoffileswithouttheirscontent});现在,如何对子文档数组的字段使用相同的选项?(即在下面的示例中,将select:false设置为

node.js - 如何在 Mocha 单元测试中使用 Mongoose ?

感觉很迷茫,怎么在mocha中单元测试涉及到mongodb,我还是不能成功调用save函数,没有异常抛出。我尝试用最简单的例子进行测试,发现还是有问题,这是我的代码。varassert=require("assert")varmongoose=require('mongoose');mongoose.connect('mongodb://localhost/dev',function(err){if(err)throwerr});describe('incrementId',function(){describe('increment',function(){it('shouldhas

node.js - 使用 mongoose findOneAndUpdate 更新 mongo 集合

我设计了以下模式并且插入工作正常{"uid":"541a5edaef7b20086c2c9ea0","_id":ObjectId("541a6bca735a20060c593813"),"exams":[{"start_time":"2014-09-18T05:21:14.219Z","status":"passed","chapter_id":ObjectId("54194290022f6d830f255f2e")},{"start_time":"2014-09-18T05:26:14.219Z","status":"attending","chapter_id":ObjectId(

javascript - Mongoose 确定更新更新插入或更新

我想测试更新的“upsert”选项是否正常。所以我用相同的键将一个对象“upsert”到mongodb两次。但是它没有显示插入的消息。我错过了什么吗?(mongodb:v2.6.3;Mongoose:3.8.15)Member.findOneAndRemove({user_id:1},function(err,doc){if(!err)onsole.log(doc?'deleted':'notfound');});//->deleted,makesureuser_id=1doesn'texistMember.update({user_id:1},{$set:{name:"name1"}

Node.js:Mongoose 模式默认随机标记不是随机的

我有一个像这样的UserSchema,但我似乎无法生成唯一的随机activation_token。我正在使用rand-token生成。Foundhere.varUserSchema=newSchema({activation_token:{type:String,default:randToken.generate(64),},email:{type:String,unique:true,sparse:true},first_name:{type:String},last_name:{type:String}});似乎工作正常,但是当使用Mocha运行单元测试时,所有activatio

node.js - Mongoose findOne() 与限制(1)

使用MongoDB和适用于Node.js的Mongoose驱动程序,我想限制必须在API中重复的代码量。而不是做这样的事情:varlimit=req.query.limit||-1;if(limit===1){Model.findOne({})...}else{Model.find({})...}这样做会更好:varlimit=req.query.limit||-1;Model.find({}).limit(limit);所以我有两个问题:(1)使用limit(1)是否与findOne()具有相同的效果,后者是更高效的搜索,因为查询会在找到第一个匹配项后立即返回?(2)limit(-1

node.js - 如何在我的 mongoose 集合中插入自动递增数字

我是Mongoose的新手,我有一个像这样的Mongoose模式:varuser=mongoose.Schema({userID:{type:String,required:true},seq:{type:Number,default:0},firstname:{type:String},lastname:{type:String},dob:{type:String},email:{type:String,required:true},username:{type:String,required:true},displayname:{type:String},password:{typ

javascript - Mongoose - 如果存在,则在 Subdoc 上增加字段,否则创建新的

我正在尝试做什么。我有一个包含operationCountSchema对象列表的userSchema。我想要做的是创建一个静态方法来更新这些操作计数子文档之一上的count字段(如果它存在(由month_id标识)字段)。如果当月不存在operationCountSchema文档,则应创建一个新文档。有没有办法在Mongoose中实现这种行为?我试过使用upsert无济于事。如何做到这一点?谢谢。代码varoperationCountSchema=mongoose.Schema({month_id:String,count:{type:Number,default:0}},{_id:f