草庐IT

mongoose-dbref

全部标签

node.js - Mongoose 嵌套对象数组中的唯一值

对于我的项目,我想为组织组保留一个mongoose文档,如下所示:vargroupSchema=Schema({name:{type:String},org:{type:Schema.Types.ObjectId,ref:'Organization'},...users:[{uid:{type:Schema.Types.ObjectId,ref:'User'},...}]});我想防止同一个用户两次出现在同一个组中。为此,我需要强制users.uid在users数组中是唯一的。我尝试为uid声明“唯一:真”,但这没有用。有没有办法用mongoose或mongoDB做到这一点,而无需额外

javascript - Mongoose 填充嵌入式

我使用Mongoose.js,无法解决3级层次文档的问题。有两种方法。第一-没有引用。C=newSchema({'title':String,});B=newSchema({'title':String,'c':[C]});A=newSchema({'title':String,'b':[B]});我需要显示C记录。我如何填充/找到它,只知道C的_id?我正在尝试使用:A.findOne({'b.c._id':req.params.c_id},function(err,a){console.log(a);});但我不知道如何从returnet中获取我需要的仅c对象。其次如果使用refs

javascript - 如果 .find() mongoose 没有找到任何东西,请执行某些操作

我将一些数据存储在mongodb中,并使用js/nodejs和mongoose访问它。我可以使用.find()在数据库中找到一些东西就好了,这不是问题。问题是如果没有什么,我想做点别的。目前这是我正在尝试的:UserModel.find({nick:act.params},function(err,users){if(err){console.log(err)};users.forEach(function(user){if(user.nick===null){console.log('null');}elseif(user.nick===undefined){console.log(

node.js - 当 mongodb 的好处应该是无模式时,为什么 mongoose 使用模式?

我是mongodb的super新手。我正在使用mongoose从node.js访问mongodb,并且知道如何让事情正常工作,但我认为我不明白为什么它会以这种方式工作。最重要的是,当mongodb的突出特点之一是它没有模式时,我不明白为什么mongoose有“模式”。有人可以启发我吗?谢谢。 最佳答案 没有架构的数据是无用的。你从MongoDB得到一个文档,你用它做什么?阅读一些领域?您需要知道这些字段的名称、类型和含义。这是一个架构。当人们说MongoDB“没有模式”时,他们的真正意思是它不像SQL数据库那样强制执行模式。Mong

mongodb - node.js 的 mongoose 中的十进制/ float

我在node.js/mongoDB/mongoose上启动了我的第一个测试应用程序,这是一个非常简单的应用程序,旨在在DB中创建记录并检索它们。我创建了一个类似的模型:varCar=newSchema({brand:String,speed:Number,date:{type:Date,default:Date.now}});这很好,除了我希望能够为速度提供一个浮点值而不是整数值。我尝试了Decimal和Float,但它们都不起作用。我也没有在文档中找到。有什么想法吗? 最佳答案 我搜索了一下,foundthisarticlesta

node.js - 使用 mongoose 在 mongodb 中设置集合的到期时间

下面是可以通过mongo终端设置集合的过期时间(一个TTL)的命令:db.log.events.ensureIndex({"status":1},{expireAfterSeconds:3600})如何使用mongoose从Node.js中的代码执行此操作? 最佳答案 在Mongoose中,您可以通过expires在Date字段上创建TTL索引。该字段的架构定义中的属性://expiredocs3600secondsaftercreatedAtnewSchema({createdAt:{type:Date,expires:3600}

mongodb - Mongoose 是否支持 Mongodb `findAndModify` 方法?

我想使用findAndModify原子地增加一个字段,使用Mongoose。但是,下面的代码会抛出错误“TypeError:Object#hasnomethod'findAndModify'”://definingschemaforthe"counters"tablevartableSchema=newSchema({_id:String,next:Number});//creatingtableobjectforthecounterstablevarcounters_table=mongoose.model('counters',tableSchema);vartableObj=ne

node.js - 使用 2 个字段的 Mongoose 自定义验证

我想使用mongoose自定义验证来验证endDate是否大于startDate。如何访问startDate值?使用this.startDate时,不起作用;我不确定。vara=newSchema({startDate:Date,endDate:Date});varA=mongoose.model('A',a);A.schema.path('endDate').validate(function(value){returndiff(this.startDate,value)>=0;},'EndDatemustbegreaterthanStartDate');diff是一个比较两个日期的

node.js - 未找到匹配项的 Mongoose 查询返回什么?

我对Mongoose文档感到有些困惑。如果我在mongoose中运行不匹配集合中任何文档的查询,那么回调函数callback(err)中err和results的值是多少,结果)?我只是不知道Mongoose认为什么是“错误”。作为一名数学家,返回空集(即results数组为空)似乎完全有效,不应该是“错误”——查询执行得很好,只是没有匹配的文档。另一方面,有些人可能认为这是一个“错误”。来自mongoose文档:err=null,results=[]err=null,结果=nullerr=错误文档,results=null 最佳答案

node.js - 具有一对多关系的 Mongoose 文档引用

我正在为一个新项目设计数据库结构,而且我对MongoDB很陌生,显然是Mongoose。我读过Mongoosepopulation文档,它具有一对多的关系,一个Person文档到多个Story文档,但让我感到困惑的部分是where而不是Story文档引用了它所属的Person文档,Person架构对其进行了设置,因此它具有Story文档的数组它“拥有”。我正在设置与此非常相似的东西。但我一直认为在创建新的Story文档以具有Person文档ID时会更容易。但也许那只是因为我更熟悉使用连接的MySQL关系。如果这是最好的方法(我确信它是,因为它在文档中),当创建新的Story文档时,更新