Tag: mongodb

如果数组包含id mongoose,则获取数组

这是一个棘手的问题。 我以为我可以使用$,但在查询后,这不是我所期待的。 这是我的模式 var gameSchema = new mongoose.Schema({ state: { type: String, default: "invited" }, finished: { type: Boolean, default: false }, players: { type: [{ type: mongoose.Schema.Types.ObjectId, ref: 'users' }], required: true, }, scores: [scoreSchema], chat : [chatSchema] }); 我试图做的请求是以下,我发送一个用户ID,如果播放器数组包含此Id,返回数组中的其他ID(数组将始终具有长度2)。 背景是,你可以查找你以前玩过的人。 这是我的,但“球员”应该是一个arrays,这不是我想要返回的游戏,所以 exports.getFriends = function(id, cb){ gameSchema.find({ id: { "$in": "players"} }, function(err, games){ […]

如何在不重复代码的情况下在实时数据库和生产数据库之间切换?

这是我的情况。 我有一个广泛的基于REST的API,使用Mongoose连接到MongoDB数据库。 这个API被写成一个标准的“MEAN”栈应用程序。 目前,当开发人员查询API时,他们总是连接到实时生产数据库。 我想要做的是将一个完全相同的重复数据库作为“分段”数据库,其中新的数据将首先添加,经过一段时间的审查,然后移动到实时数据库。 然后,我希望开发人员能够简单地通过修改查询来查询任何一个。 我开始用Mongoose文档研究这个问题,看起来好像模型与DB连接相关,如果我想要有多个连接,我也必须有多个模型,每个连接一个。 这将是湿码的噩梦,而不是我想要的path。 我想要做的就是不触碰任何我的代码,只需要一个切换到一个给定的查询适当的数据库。 所以我的问题是,我怎么能做到这一点? 可能吗? 文件似乎暗示它不是。

蓝鸟和mongoose:警告:一个承诺是在一个处理程序中创build的,但没有被返回

我在我的项目中使用mongoose和蓝鸟。 这个警告无处不在,即使我纠正了我的所有代码。 它仍然发生。 exports.middleware = function (req, res, next, id) { Account.findById(id).exec().then(function(account) { if (!account) { return res.status(404).send({ message: 'No account with that identifier has been found' }); } req.account = account; next(); }).catch(function(err) { return next(err); }); };

使用项目字段计算mongoose

.project({ percentage_amount: { $multiply: ["$commission", { $divide: ["$price", 100] }] }, payable: { $subtract: ["$price", percentage_amount] } }) 这是可能的mongoose? 如果没有,该怎么做? 请帮助我

Mongoose:用投影填充对象的嵌套数组

var CarSchema = new Schema({ name: {type: String}, partIds: [{type: Schema.Types.ObjectId, ref: 'Part'}], }); var PartSchema = new Schema({ name: {type: String}, props: [ { colour: {type: String}, shape: {type:String} } ], }); 例如 Car = { name: "BMW", partIds:[ObjectId("57baa43e152654f80aac36a6")]} Part = { _id: ObjectId("57baa43e152654f80aac36a6"), name: "Piston", props: [{colour:"red", shape: "Cubical"},{colour:"green", shape: "cylindrical"}] 所以,当我查询我应该得到这样的文档: Car […]

将nodejs / mongoose部署到heroku

这是我在Heroku的第一次尝试。 我能够在heroku上“部署成功”,但是当访问我的应用时,它说“ 应用程序失败” 。 我遵循这个指南: https : //scotch.io/tutorials/use-mongodb-with-a-node-application-on-heroku 我觉得棘手的是因为我使用的是Mongoose,它可能与URI没有很好的关系。 我也使用mlab插件。 这是我的后台设置: var request = require('request'); var app = express(); var mongoCredentialss = require('/mongo_credentialss.json'); var conn = mongoose.connection; var path = require('path'); // connect to the database mongoose.connect('mongodb://' + mongoCredentials.username + ':' + mongoCredentialss.password + '@ds012345.mlab.com:12345/mydatabase-db'); mongoose.Promise = Promise; app.listen(3000, function() { console.log('Listening on 3000…'); }); […]

MongoDB使用聚合$查找join两个集合,或者在Node.js中填充

这里有两个集合的架构 var activitySchema = new Schema({ activity_id: {type: String, index: {unique: true}, required: true}, begin_date : String, … }) var registrationSchema = new Schema({ activity_id: {type: String, index: {unique: true}, required: true}, registration_id: {type:String, trim: true, index: true ,required: true }, email : String, … }) 我想在同一个查询中的activity.begin_date , registration.id , registration.email 。 我能怎么做? 我在网上find了一些解决scheme,但是仍然不知道是使用填充还是聚合$lookup (这个看起来是新的)。 […]

$ in在环回中不起作用

我有一个string数组,如下所示: ['57b69c9d4ae615ef0e312af6','57b69bf477b8e5cd0eb38c88']; 我将它转换为ObjectId,如下所示: var objectIds = []; for(var i=0; i<expenseIds.length; i++){ var _id = new ObjectId(expenseIds[i]); objectIds.push(_id); } 的ObjectID: [ 57b69c9d4ae615ef0e312af6, 57b69bf477b8e5cd0eb38c88 ] 现在我在mongoDb中使用$in查询所有的细节,如下所示: app.models.xxxxx.find({"_id" : {"$in" : objectIds}}, function(err, res){ if(err){ } else { console.log(res); } }); 但它没有过滤。 所有在收集的文件xxxxx正在返回..请分享您的想法。 提前致谢。 编辑:当我在mongo shell中运行命令: db.xxx.find({ _id: { '$in': [ 57b69c9d4ae615ef0e312af6, 57b69bf477b8e5cd0eb38c88 ] }}); 它抛出错误: SyntaxError: identifier […]

如何得到一个'和'与sails-mongodb工作的查询

我有一个在mongo shell中工作的查询 db.getCollection('insights').find({$and:[{author:/jim/i}]}) 返回2条logging。 “或”代码调用waterline / sailsjs-mongo db('insights').find({ or: [ {or: [ {author: new RegExp( ".*"+"jim"+".*", 'i' )} ] } ] }).limit(req.params.limit).skip(req.params.offset).exec(function (err, insights) { … } 按预期返回2条logging。 如果我将“或”更改为“和” db('insights').find({ or: [ {and: [ {author: new RegExp( ".*"+"jim"+".*", 'i' )} ] } ] }).limit(req.params.limit).skip(req.params.offset).exec(function (err, insights) { … } 我得到0个不是预期的logging。 它应该返回2条logging。 我使用本地mongodb JavaScript客户端编写了一些代码。 var MongoClient […]

从MongoDB 2.6迁移到3.2。 我们可以跳过3.0的数据?

从MongoDB 2.6升级到MongoDB 3.2时 ,文档要求首先升级到MongoDB 3.0。 这是数据转换吗? MongoDB 2.6 mongodump是否与MongoDB 3.2 mongorestore兼容? 这是否工作? 运行MongoDB 2.6 mongodump -v –dumpDbUsersAndRoles 拖放collections (升级到MongoDB 3.0 ) 升级到MongoDB 3.2 mongorestore 主要我想知道我们是否可以将3.2转储到3.2中,为了更好的理解,我想知道如果没有数据(如果是这样, 为什么 )升级到3.0是必要的。 -update- 索引和用户/angular色有变化。 mongodump不包括索引,所以我们在那里安全。 用户/angular色( –dumpDbUsersAndRoles )是否安全?