Articles of mongoose

$ unset是空的。 您必须像这样指定一个字段:{$ unset:{<field>:…}}

mongodb版本3.0.1 mongoose版本4.0.3 我正在尝试这样做: groupsModel.updateQ({_id:group._id},{ $unset:{"moderators":""}, $set:{"admins":newAdmins} }) 从catch说明我得到一个MongoError '\'$unset\' is empty. You must specify a field like so: {$unset: {<field>: …}}' 但它不是空的。 moderators ,但是,不在架构,这就是为什么我想要删除它。

在查询的时候用mongoose来降低内存使用的方法

我正在研究节点后端,试图通过mongoose来优化对mongodb的非常大的查询。 预期的返回大小是相当可观的,但是由于某种原因,当我发出请求时,节点开始消耗大量的内存,例如200MB +用于一个大的请求。 考虑到大多数情况下,回报的规模小于10mb,这似乎并不正确。 在完成之后,它也拒绝释放内存,我知道这可能只是V8 GC的默认行为,但是我担心的是,单个find()请求会消耗大量的内存。 我通过testingfind()调用来隔离它。 一旦完成了调用,它将执行一些后处理,然后将数据发送到一个callback函数,全部使用匿名函数。 我曾尝试使用查询stream而不是model.find(),但它显示没有真正的改进。 环顾四周没有得到任何回应,所以我会问,有没有一种已知的方法来减less,控制或优化mongoose的内存使用? 有谁知道为什么如此多的内存被用于一个单一的电话? 编辑 根据Johnny和Blakes的build议,使用lean()和streaming的混合,并使用暂停和恢复,极大地改善了运行时和内存的使用。 谢谢!

用mongoose api和nodejssearch数据库?

即时通讯使用nodejs和mongoosebuild立一个API,即时通讯尝试做searchfunction,但它似乎去查询任何东西,代码。 app.get('/search', function(req,res){ return Questions.find({text: "noodles"}, function(err,q){ return res.send(q); }); }); 它不给我任何结果,我知道他应该至less有4个结果从这个查询,thiers 4个问题数据库文件中的单词“noodles”,一切正在工作的数据库连接和我的节点服务器

Mongoose限制查询1000结果,当我想要更多/所有(从2.6.5迁移到3.1.2)

我将我的应用程序从Mongoose 2.6.5迁移到3.1.2,并且遇到了一些意想不到的行为。 即我注意到,查询结果自动被限制为1000条logging,而几乎所有的东西都是一样的。 在我的代码(下面)中,我设置了一个值maxIvDataPoints ,它限制了返回的数据点的数量(最终发送到客户端浏览器),并将该值设置为1500.我使用计数查询来确定总数结果,然后使用计数和maxIvDataPoints的值来限制实际查询结果的后续mod,以确定mod的值。 我正在运行节点0.8.4和mongo 2.0.4,在coffeescript中编写服务器端代码。 在安装mongoose 3.1.x之前,代码正常工作,每次只返回1500个数据点。 安装完3.1.2后,我每次都得到1000个数据点(假设指定范围内有1000个以上的数据点)。 结果被截断,所以数据点1001到~1500不再被返回。 似乎可能会有一些设置在某个地方来支配这种行为,但我无法在文档中find任何内容,在此处或在Google小组中。 我仍然是一个相对n00b,所以我可能错过了一些明显的东西。 DataManager::ivDataQueryStream = (testId, minTime, maxTime, callback) -> # If minTime and maxTime have been provided, set a flag to limit time extents of query unless isNaN(minTime) timeLimits = true # Load the max number of IV data points to be displayed from […]

Mongoose .pre('save')不会触发

我有以下模型mongoose.model('quotes') : var mongoose = require('mongoose'); var Schema = mongoose.Schema; var quotesSchema = new Schema({ created: { type: String, default: moment().format() }, type: { type: Number, default: 0 }, number: { type: Number, required: true }, title: { type: String, required: true, trim: true}, background: { type: String, required: true }, points: { type: Number, […]

链承诺在JavaScript

我创build了许多这样的承诺,以便在我的数据库中创build对象。 var createUserPromise = new Promise( function(resolve, reject) { User.create({ email: 'toto@toto.com' }, function() { console.log("User populated"); // callback called when user is created resolve(); }); } ); 最后,我想按我想要的顺序打电话给我所有的承诺。 (因为有些对象依赖于其他对象,所以我需要保持这个顺序) createUserPromise .then(createCommentPromise .then(createGamePromise .then(createRoomPromise))); 所以我期望看到: User populated Comment populated Game populated Room populated 不幸的是,这个消息被打乱,我不明白是什么。 谢谢

Mongo Atlas:连接身份validation失败,自定义数据库

我正在尝试Mongo Atlas Cloud。 我创build一个集群,我正在尝试与mongo shell的连接:(与mongo驱动程序相同的问题) mongo mongodb://***-cluster-shard-00-00-***.mongodb.net:27017,***-cluster-shard-00-01-***.mongodb.net:27017,***-cluster-shard-00-02-***.mongodb.net:27017/any_database?replicaSet=****-Cluster-shard-0 –ssl –username ***** –password ***** 这是文档中的连接string。 这是错误的: MongoDB shell version: 3.2.7 connecting to: mongodb://***-cluster-shard-00-00-***.mongodb.net:27017,***-cluster-shard-00-01-***.mongodb.net:27017,***-cluster-shard-00-02-***.mongodb.net:27017/any_database?replicaSet=***-Cluster-shard-0 2016-07-07T01:31:17.535-0300 I NETWORK [thread1] Starting new replica set monitor for ***-Cluster-shard-0/***-cluster-shard-00-00-***.mongodb.net:27017,***-cluster-shard-00-01-***.mongodb.net:27017,***-cluster-shard-00-02-***.mongodb.net:27017 2016-07-07T01:31:17.535-0300 I NETWORK [ReplicaSetMonitorWatcher] starting 2016-07-07T01:31:20.084-0300 E QUERY [thread1] Error: Authentication failed. : DB.prototype._authOrThrow@src/mongo/shell/db.js:1441:20 @(auth):6:1 @(auth):1:2 exception: login failed 只有当我使用pipe理数据库“/ admin?”时才可以连接到数据库 在连接string中。 问题: […]

MongoDB是社区网站的正确DB吗?

我正在用Node.JS和Express创build一个社区站点,几乎所有的快速教程或示例都使用MongoDB,所以我查了一下。 到目前为止我使用的唯一的数据库是MySQL,但是我对它并不是很熟悉,所以不会读入MongoDB。 Mongo看起来相当不错,文档模型可能是有益的。 和mongoose一起使用很简单。 但是我有一些问题,所以如果不适合的话,我不花很多时间学习使用MongoDB: 我读过MongoDB是不可靠的,如果你只在一台机器上使用它,你可能会遇到数据丢失。 是对的吗? 该项目不是那么大,我可以承受另一台服务器和数据丢失是完全不行! 想象一下一些论坛post就消失了。 但是我想人们不会在这种情况下使用它。 该网站将包含一个自我构build的论坛,我不知道如果关系数据库会更好。 但是,您可以保存embedded式post的线程等。 但不知道如何searchMongo不支持全文search。 你怎么看? 什么时候在Mongo中使用embedded式文档? 示例:用户可以像在Twitter上一样发布状态更新。 你会将这些更新保存在用户文档中吗? 可以有很多更新。 或每更新一个文件,并将其链接到用户ID? 3.1如何查询多个文档? 你想获取你的朋友的最后10个状态更新。 你可以用MySQL中的JOIN来完成。 有没有办法使用MySQL中的文档的自动增量ID? 例如一个用户应该有一个唯一的整数密钥,但我不希望一些像Mongo这样的随机数字,为了保持用户ID很小。 你如何处理mongoose的竞争条件? 你从数据库中加载一个文档,编辑一些东西并稍后保存。 但也许它已经在同一时间改变了。

Mongoose TypeError模型的findOne方法

下面的TypeError在一些旧的代码中出现。 TypeError: Object #<Object> has no method 'findOne' 最近受到影响的模型定义了两个新的静态方法,这些方法引用了外部模型。 在退出新的静态方法之后,我能够确定根本原因是外部模型的require语句。 模式如下所示: var UserModel = require('./user'); var GroupSchema = new Schema({ name: String, users: [{ type : Schema.ObjectId, ref: 'UserModel'}], }); GroupSchema.statics.findSomeUsers = function(group, callback) { this.find({name : session_user._id}, function(err, groups) { UserModel.find({_id : {$in : group.users}}, function(err,patients) { // do magic }); }); }; module.exports […]

关系数据库devise到mongoDB / mongoosedevise

我最近开始使用mongoDB和mongoose为我的新的node.js应用程序。 在我努力适应mongoDB / noSQL思维方式(如非规范化和缺乏外键关系)之前,只使用了关系数据库。 我有这个关系数据库devise: **Users Table** user_id username email password **Games Table** game_id game_name **Lobbies Table** lobby_id game_id lobby_name **Scores Table** user_id game_id score 所以,每个大厅都属于一个游戏,多个大厅可以属于同一个游戏。 用户对不同的游戏也有不同的分数。 到目前为止,我的用户架构,我有以下几点: var UserSchema = new mongoose.Schema({ username: { type: String, index: true, required: true, unique: true }, email: { type: String, required: true }, password: { type: String, […]