Tag: mongoose schema

如果数组包含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){ […]

如何在mogodb中使用$ lookupembedded文档字段

请看看,你的帮助将被appriciated var user = new Schema({ name: String, }); var Comments = new Schema({ title : String , body : String ,user_id : {type: Schema.Types.ObjectId, ref: 'user' } , date : Date }); var blog = new Schema({ author : String , title : String , body : String , date : Date , user_id […]

为什么Mongoose不允许我访问JSON属性?

在我的路线文件中,我有 router.get('/users/:user', function(req, res) { mongoose.model('users').find({name: req.params.user}, function(err, user) { res.send(user.name || 'User.name is not defined' ); }); }); 我的模式被定义为 var userDataSchema = new Schema({ name: String }, {collection: 'users'}); mongoose.model('users', userDataSchema); 在我的路线文件中,如果我只是做res.send(user) ,那么它给了我适当的JSON与所有的用户与他们的名字。 我的问题是,我无法从JSON访问特定的名称。 我已经尝试做JSON.stringify(user) ,然后JSON.parse()该variables,但user.name仍然无法访问。 我现在也尝试过user.toJSON() ,但是这会导致错误,甚至不响应'User.name is not defined' 编辑:这是JSON: [ { _id: "57feb97017910fa7e0e194d8", name: "Garrett" }, { _id: "57feb97817910fa7e0e194d9", name: "Steve" […]

在用户注册中已经添加了其他字段的架构中,使用mongoose在MongoDB中插入数组

我正在创build在线课程的申请。 我为用户注册创build了一个模式。 在架构中,我也想添加一个用户在注册的课程的名称。 课程名称是一个数组。 用户注册成功。 之后,我创build了/仪表板的路线,用户发送POST请求添加课程名称。 该课程应该添加到注册课程的相同注册模式字段中。 但是,当我保存一个注册模式的新对象时,它会创build一个新的文档字段courseEnrolled字段。 我希望这个POST请求值被添加到用户的文档字段当然是以数组forms进行注册。 这是我如何定义我的注册模式。 它的名字在account.js var mongoose = require('mongoose'); var Schema = mongoose.Schema; var passportLocalMongoose = require('passport-local-mongoose'); var courseSchema = new Schema({ courseName : String }); var Account = new Schema({ username: { type: String, unique: true }, password: String, email: String, firstName: String, lastName: String, courseEnrolled: [{courseName : […]

如何将数据保存到Mongoose中的数组?

我想存储每个点击事件到Mongoose中的数组,如果没有任何数组,那么它会为我创build一个。 目前它简单地保存为对象即{x:954,y:256},{x:254,y:156}我需要的是这样的[{x:954,y:256},{x:254 ,y:156}] 这是我的代码: clickModel Schema enter code var mongoose = require('mongoose'); require('mongoose-double')(mongoose); var Schema = mongoose.Schema; var integerValidator = require('mongoose-integer'); var SchemaTypes = mongoose.Schema.Types; var clickPoint = new Schema({ x: { type: SchemaTypes.Double }, y: { type: SchemaTypes.Double }, value: { type: Number, integer: true } }); clickPoint.plugin(integerValidator); //export model… module.exports = mongoose.model("ClickPoint", clickPoint); […]

Mongoose,将数据添加/更新到集合的一组文档

你好,这里是我的问题的情况: 我的Categories模型看起来像这样: schema: { _id: String, name: String, overview: String, courses: [ { _id: String, name: String } ] } 我在上面的集合类别中logging了多个类别 我需要的 我有一个[数组] Categories._id像这样: [ '5812f3cb04700f2563c0e56a', '5812f3ff04700f2563c0e56b', … ] 我想要的就是把这个对象{_id:5812f3ff04700f2563c0e56b, name:'SOMETHING' } _id 数组中列出的所有文档 我试过了什么 Categories.update({ '_id': { $in : array_of_IDs } }, { $push :{ 'courses':{ _id: ret._id , name: ret.title } } }, […]

mongoose关系devise

我最近开始在一个Node.js应用程序中使用Mongoose和Express.js,我有一个正确的方式来devise我的模式的问题。 我有几个有一些关系的模式,即位置模式有一个对象数组(它不是在这个上下文中的JS对象),而对象模式有它的位置属性。 我已经知道Mongoose中的关系是通过使用人口来解决的,但是当我实现这个方法的时候,我注意到我必须input很多重复的代码,也就是每当我想创build一个新的对象的时候,我也必须更新Location的数组对象,然后将该位置分配给该对象的属性。 在一个单独的查询中手动组装所有具有与我想从数据库中获取的位置相同的locationId属性的对象是不是更加简单? 我也考虑过将对象存储在位置文档的数组中(作为子文档),但是我决定要能够独立于位置(不查询位置)使用对象(创build,移除,更新),所以这种方法我猜不符合我的需求。 但是,在我的情况下,群体也有其缺点,所以我想这是最好的方式去手动收集由该位置的ID单独查询中的特定位置的对象。 我想听到这个技术的一些专业或高级用户对deviseMo​​ngoose模式的意见,以便我和其他人不会在后来保持和扩展我们的应用程序时遇到麻烦。 以下是我目前的模式: var locationSchema = new mongoose.Schema({ title: String, objects: [{ type: String, ref: 'object' }] }); var objectSchema = new mongoose.Schema({ title: String, location: { type: String, ref: 'location' } });

Mongoose.js findOne返回查询元数据

我正在试图在我的数据库上运行一个mongoose.findOne,但我得到意想不到的结果。我的查询是 const User = mongoose.model('User', {name: String, email: String, passwordHash: String, validation: String, validationCode: String, favorites: Array }) exports.findUser = function findUser(email){ const foundUser = User.findOne({email: email}, function(err, userObj){ if(err){ return err } else if (userObj){ return userObj } else{ return null } }) return foundUser } 然而,这返回以下数据(看似随机?),并没有我所要求的数据 Query { _mongooseOptions: {}, mongooseCollection: NativeCollection { […]

Mongoose:覆盖更新的数组属性

如何覆盖基于给定数组作为源文档的数组属性? 架构: var postSchema = new mongoose.Schema({ title: { type: String, required: true, index: { unique: true } }, content: { type: String }, tags: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Tag' }] }); 我现在有一个标签对象的ID数组,我想覆盖标签属性。 我现在遇到的问题是,它添加了新的标签,但它不会删除不在源数组中的标签。 我正在使用findOneAndUpdate执行更新,如下所示: // Pseudo code example Post.findOneAndUpdate({ _id: id }, { tags: ["id1…", "id2…"], {}, cb);

如何删除数组中的空字段.. nodejs

我正在使用下面的代码…但如果状态是空的iss显示下面的结果在数据库中…我想删除如果状态为空.. 1地址{},状态{}保存在数据库中。 function CheckStatus(oldJob, newJob) { var obj = {}; if(newJob && newJob.Status) { obj.Status= {}; if (oldJob.Status.total !== newJob.Status.total) { obj.Status.total = newJob.Status.total; } if (oldJob.Status.charge_description && oldJob.Status.charge_description !== newJob.Status.charge_description) { obj.Status.charge_description = newJob.Status.charge_description; } } } MongoDB的 "Job" : { "_id" : ObjectId("5873b352e7621d08fccc5890"), "updated_by" : "", "details" : "{\"current_status\":\"Completed\",\"address\":{},\"Status\":{}}", "changetype" : "Update", "datetime" […]