Questions tagged «mongoose»

Mongoose是用JavaScript编写的MongoDB对象建模工具或ODM(对象文档映射器),旨在在异步环境中工作。

18
将created_at和updated_at字段添加到猫鼬模式
有没有一种方法可以将created_at和updated_at字段添加到猫鼬模式,而不必每次调用新的MyModel()时都将其传递? created_at字段将是一个日期,并且仅在创建文档时添加。每当在文档上调用save()时,updated_at字段都将被更新为新日期。 我已经在模式中尝试过此操作,但是除非我明确添加,否则该字段不会显示: var ItemSchema = new Schema({ name : { type: String, required: true, trim: true } , created_at : { type: Date, required: true, default: Date.now } });

15
mongoError:拓扑已被破坏
我有一个用Restify和Mongoose在node.js中构建的REST服务,以及一个mongoDB,它的集合包含大约30.000个常规大小的文档。我的节点服务通过pmx和pm2运行。 昨天,节点突然开始通过消息“ MongoError:拓扑已被破坏”消除错误,仅此而已。我不知道这是什么意思,可能触发了什么。谷歌搜索时也没有太多发现。所以我想在这里问。 今天重新启动了节点服务后,错误停止了出现。我也有其中一个正在生产中运行,这使我感到害怕,这可能在任何给定时间发生在运行在那里的设置的相当关键的部分... 我正在使用以下版本的提及的软件包: 猫鼬:4.0.3 重新调整:3.0.3 节点:0.10.25


7
MongoDB和Mongoose之间的区别
我想使用mongodb数据库,但是我注意到有两个不同的数据库,它们都有自己的网站和安装方法:mongodb和mongoose。因此,我问自己一个问题:“我使用哪个?”。 因此,为了回答这个问题,我问社区是否可以解释这两者之间的区别?以及是否有利弊?因为它们看起来和我非常相似。

17
猫鼬如何排序?
我找不到排序修饰符的文档。唯一的见识在于单元测试: spec.lib.query.js#L12 writer.limit(5).sort(['test', 1]).group('name') 但这对我不起作用: Post.find().sort(['updatedAt', 1]);

7
完成后,正确关闭猫鼬的连接
我在不希望连续运行的脚本中使用猫鼬,而且我面对的似乎是一个非常简单的问题,但我找不到答案。简单地说,只要我调用将请求发送到mongodb的任何mongoose函数,我的nodejs实例就不会停止,而我必须使用Ctrl + c或Program.exit()手动将其杀死。 该代码大致如下所示: var mongoose = require('mongoose'); // if my program ends after this line, it shuts down as expected, my guess is that the connection is not really done here but only on the first real request ? mongoose.connect('mongodb://localhost:27017/somedb'); // define some models // if I include this …

6
MongoDB /猫鼬在特定日期查询?
是否可以查询特定日期? 我在mongo Cookbook中发现我们可以针对某个范围进行查询 ,例如: db.posts.find({"created_on": {"$gte": start, "$lt": end}}) 但是可能有特定的日期吗?这不起作用: db.posts.find({"created_on": new Date(2012, 7, 14) })

6
如何使用Mongoose访问现有集合?
我question在数据库中收集了300个对象test。我可以通过MongoDB的交互式外壳轻松地与该集合进行交互;但是,当我尝试在express.js应用程序中通过Mongoose获取集合时,我得到了一个空数组。 我的问题是,如何才能访问此现有数据集而不是快速创建它?这是一些代码: var mongoose = require('mongoose'); var Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/test'); mongoose.model('question', new Schema({ url: String, text: String, id: Number })); var questions = mongoose.model('question'); questions.find({}, function(err, data) { console.log(err, data, data.length); }); 输出: null [] 0

4
如何用猫鼬生成ObjectId?
我想ObjectId用Mongoose 生成一个MongoDB 。有没有办法ObjectId从Mongoose 访问构造函数? 这个问题是关于从头开始产生新的 ObjectId。生成的ID是全新的通用唯一ID。 另一个问题是关于ObjectId从现有的字符串表示形式创建一个。在这种情况下,您已经具有ID的字符串表示形式(它可能是通用的也可能不是唯一的),并且正在将其解析为ObjectId。

3
生产代码中的猫鼬索引
根据Mongoose 文档中关于MongooseJS和MongoDB/的内容Node.js: 当您的应用程序启动时,Mongoose会自动调用ensureIndex架构中的每个已定义索引。虽然有利于开发,但建议在生产中禁用此行为,因为创建索引会严重影响性能。通过将autoIndex架构选项设置为false来禁用该行为。 这似乎指示从Mongoose删除自动索引,然后再进行部署以优化Mongoose,这是从指示Mongo在应用程序启动时遍历所有索引开始的,这似乎是有道理的。 在生产代码中处理索引的正确方法是什么?也许外部脚本应该生成索引?或者,ensureIndex如果单个应用程序是集合的唯一读取器/写入器,也许是不必要的,因为每当发生DB写操作时,该应用程序都会继续索引? 编辑:补充,MongoDB中提供了良好的文档对如何做索引,但不为什么还是当明确索引指令应该做的。在我看来,编写应用程序应在具有现有索引的集合上自动使索引保持最新,这ensureIndex实际上是一次性的事情(在应用新索引时完成),在这种情况下,猫鼬autoIndex应该是在正常服务器重启下无操作。

5
单节点项目中的猫鼬和多个数据库
我正在做一个包含子项目的Node.js项目。一个子项目将拥有一个Mongodb数据库,Mongoose将用于包装和查询db。但是问题是 猫鼬不允许在一个猫鼬实例中使用多个数据库,因为模型建立在一个连接上。 要使用多个猫鼬实例,Node.js不允许使用多个模块实例,因为它在中具有缓存系统require()。我知道在Node.js中禁用模块缓存,但是我认为这不是一个好的解决方案,因为它只需要猫鼬。 我尝试使用createConnection()和openSet()猫鼬,但这不是解决方案。 我试图深度复制猫鼬实例(http://blog.imaginea.com/deep-copy-in-javascript/),以将新的猫鼬实例传递给子项目,但是它抛出RangeError: Maximum call stack size exceeded。 我想知道是否存在将多个数据库与猫鼬一起使用或解决此问题的任何解决方法?因为我认为猫鼬非常容易和快速。还是任何其他模块作为建议?

6
猫鼬子文档与嵌套模式
我对在主模式中使用子文档和更深层的优缺点感到好奇: var subDoc = new Schema({ name: String }); var mainDoc = new Schema({ names: [subDoc] }); 要么 var mainDoc = new Schema({ names: [{ name: String }] }); 我目前在各处使用子文档,但是我主要想知道性能或查询我可能遇到的问题。

20
在路径“ _id”中,值XXX的猫鼬错误转换为ObjectId失败了吗?
当向发送请求到/customers/41224d776a326fb40f000001和文档_id 41224d776a326fb40f000001不存在时,docis,null并且我返回404: Controller.prototype.show = function(id, res) { this.model.findById(id, function(err, doc) { if (err) { throw err; } if (!doc) { res.send(404); } return res.send(doc); }); }; 但是,当_id与猫鼬期望的“格式”(我想)不匹配时,例如GET /customers/foo返回一个奇怪的错误: CastError:在路径“ _id”处,对于值“ foo”的转换为ObjectId失败。 那么这是什么错误呢?
122 mongodb  mongoose 

8
猫鼬-强制集合名称
我正在尝试使用猫鼬在其中创建数据库和集合。我的代码是: var mongoose = require('mongoose'); var db = mongoose.connect('mongodb://localhost/testdb'); var Schema = mongoose.Schema; var UserInfo = new Schema({ username : String, password : String }); mongoose.model('UserInfo', UserInfo); var user = db.model('UserInfo'); var admin = new user(); admin.username = "sss"; admin.password = "ee"; admin.save(); 当我运行此代码时,猫鼬创建了名为UserInfo的集合,而不是userinfo。如何在猫鼬中强加集合名称?
120 mongodb  mongoose 

7
猫鼬,使用查找选择特定字段
我正在尝试仅选择一个特定的领域 exports.someValue = function(req, res, next) { //query with mongoose var query = dbSchemas.SomeValue.find({}).select('name'); query.exec(function (err, someValue) { if (err) return next(err); res.send(someValue); }); }; 但是在我的json响应中,我也收到_id,我的文档架构只有两个字段,_id和name [{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}] 为什么???

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.