Tag: mongodb

mongooseselect子文件

我有这个mongoose纲要: UserSchema = new db.Schema({ fullname : String, sale : [{ _id: [db.Schema.Types.ObjectId] }], friends : [db.Schema.Types.ObjectId] } 我怎样才能修复这个代码,使其select销售的_id字段? TIA user.Model .find({ _id : { $in: friends } }) .select('sale._id') // invalid syntax .exec(function(err, results) { console.log(results); });

Node.js Mongoose没有任何反应

我试图连接到我的mongodb数据库,但它不起作用:它不运行callback,并没有引发错误: var config = require('./config'); var mongoose = require('mongoose'); var schemas = require('./app/schemas'); var model = require('./app/model'); mongoose.connect(config.db_connection, function (err) { if (err) { throw err; } }); var ModModel = mongoose.model('mods', schemas.modScheme); var query = ModModel.find(); query.exec('find', function (err, mods) { if (err) { throw err; } console.log('Retriveing mods…'); console.log(mods); }); 编辑:这个新的代码不起作用 这里是整个代码: https […]

在使用mongoose时,在节点和mongo之间加载连接是否正常?

我试图找出一个性能问题,我想知道是否正常有大约30(我猜想在群集configuration2 cpu上每个cpu 15)不同的连接。 这个数字接近一致,但我不知道为什么。

尝试从mongodb格式化date时出现问题

我正在尝试在显示模型之前在模型上格式化datetypes属性。 这是我正在使用的代码: // MODEL var mongoose = require('mongoose'), Schema = mongoose.Schema; var ArticleSchema = new Schema({ title: String, content: String, author: { type: String, default: 'Vlad'}, postDate: { type: Date, default: Date.now } }); ArticleSchema.methods.formatTitle = function() { var link = this.title.replace(/\s/g, '-'); return '/article/' + link; }; ArticleSchema.methods.snapshot = function() { var snapshot = […]

dynamic更改MongoDB副本集中的节点

我在javascript中使用它的本地驱动程序mongodb。 通过指定集合中的节点连接到复制集: var mainReplSet = new MongoDB.ReplSet([ new MongoDB.Server( '0.0.0.0, 27017, { auto_reconnect: true } ), new MongoDB.Server( '0.0.0.0', 27017, { auto_reconnect: true } ), new MongoDB.Server( '0.0.0.0', 27017, { auto_reconnect: true } ) ], { rs_name:'ReplicaSetName', readPreference: MongoDB.ReadPreference.NEAREST } ); 所以,如果我dynamic地添加一个节点到这个集合,我需要更新连接到副本集合的所有脚本。 因此重新启动它运行的任何服务器。 是否有包含新节点而不必更新此脚本?

不正确的子文档被更新?

我有一个包含一系列子文档的Schema,我只需要更新其中的一个。 我使用子文档的ID做一个findOne ,然后将返回的数组中的位置0的子文档的响应减less。 不pipe我做什么,我只能得到父文档中的第一个子文档来更新,即使它应该是第二,第三等。只有第一个子文档被更新,不pipe是什么。 据我所知它应该工作,但我不是一个MongoDB或Mongoose专家,所以我显然是错的地方。 var template = req.params.template; var page = req.params.page; console.log('Template ID: ' + template); db.Template.findOne({'pages._id': page}, {'pages.$': 1}, function (err, tmpl) { console.log('Matched Template ID: ' + tmpl._id); var pagePath = tmpl.pages[0].body; if(req.body.file) { tmpl.pages[0].background = req.body.filename; tmpl.save(function (err, updTmpl) { console.log(updTmpl); if (err) console.log(err); }); // db.Template.findOne(tmpl._id, function (err, tpl) […]

我不能将数组推入mongoose模式

这是我的控制器,一个表格发送到这里的数据: exports.addrepair = function(req, res, next){ Person.findById( req.body.id, function (err, Person) { Person.update({id: req.body.id}, {$pushAll: { problem: req.body.problem , solution: req.body.solution , date_on: Date.now() }} ,{upsert:true},function(err){ if(err){ console.log(err); }else{ console.log("Added"); } }) }) } 该模式是: var Person = new Schema ({ name: String, Repair: [ problem: String, solution: String, date_on: Date ] }) 并不能推动任何修复人。 与console.log我可以看到所有的作品,但不是推。

用mongoosesorting阿尔法

我试图通过mongoose3.6.20sorting,我收到了一些意想不到的结果。 我有一个名字的公司名单。 起初我以为也许它是在区分大小写的方式。 基于文章,我期望是真实的。 我现在正在使用虚拟属性来排除sorting字段。 不过,我仍然得到意想不到的结果。 CompanySchema.virtual('name_lower').get(function(){ return this.name.toLowerCase(); }); 当我sorting Company.find().sort({ name_lower: 1 }); 我按照以下顺序得到它: 公司名 谷歌 公司名称(是testing重复) 我也输出我的虚拟财产的价值,它看起来是正确的。 没有可能导致第二个“公司名称”出现在Google之后的空白字符或时髦字符。 使用nodejs,express,mongoose。 我错过了什么或做错了什么? 更新: 根据答案中提供的信息,我重构了我的模式以包含一些规范化字段,并将其挂接到文档的预保存事件中,在那里我更新这些规范化字段并在将来的所有查询中使用它们进行sorting。 CompanySchema.pre('save', function(next){ this.normalized_name = this.name; }); 接下来,在我使用的模式中: var CompanySchema = mongoose.Schema({ … normalized_name: { type: String, set: normalize }, … }); 凡normalize是一个函数,现在,返回一个小写的值传递给它的值。 但是,这使得我可以很快地扩展它,并且可以快速地对其他可能需要sorting的领域进行相同的处理。

从数据库返回数组中的对象

我有这样的分贝 { "name": "Tom", "cars": [ { "name": "Shirley", "kind": "Bugatti" }, { "name": "Jessica", "kind": "Maserati" }, ] } 我有这样的查询 db.people.findOne({"name: "Tom"}); 我只想返回"name": "Jessica"的对象"name": "Jessica" { "name": "Jessica", "kind": "Maserati" } 我怎样才能做到这一点? 我试过了 db.people.findOne({"name": "Tom"}, {"cars.name": 1}); db.people.findOne({"name": "Tom"}, {"cars.name.Jessica": 1}); 我试图防止返回整个事情,然后sorting一切。

从哪里可以决定使用“sails-mongoose”包的集合名称,在node.js + sailsjs中?

我有代码连接与mongo与用户名,密码,主机,DBName等在adapter.js,架构模型,并为CRUD我们可以在控制器代码。 但是从哪里可以select特定的mongo数据库集合?