2012-11-07 86 views
0

好吧,所以我试图用Mongoose更新子文档(嵌入文档)。我有:用Mongoose更新子文档

query = 
     'fanclubs.fanclub_id': fanclub_id 

    fan_update = 
     'fanclubs.$.fanclub_name': fanclub_data.fanclub_name 

    Fan.update query, fan_update, (err, numAffected) -> 
     console.log err 
     console.log numAffected 

似乎并不实际与新fanclub_name更新Fan对象。想法?

我要更新fanclub_name

编辑Fan架构

mongoose = require "mongoose" 
{FanClubMemberSchema} = require './schemas/fanClubMemberSchema' 
validation = require './validation' 

FanSchema = new mongoose.Schema(
    first_name: 
    type: String 
    trim: true 
    required: true 

    last_name: 
    type: String 
    trim: true 
    required: true 

    fullname: 
    type: String 
    trim: true 
    required: true 

    email: 
    type: String 
    lowercase: true 
    unique: true 
    required: true 
    validate: [validation.email, 'Email is invalid'] 

    fanclubs: 
    type: [FanClubMemberSchema] 
    required: false 

    added_on: 
    type: Date 
    default: Date.now 
    required: true 
) 

FanClubMemberSchema

mongoose = require "mongoose" 

FanClubMemberSchema = new mongoose.Schema 
    fanclub_id: 
    type: String 
    trim: true 
    required: true 

    fanclub_name: 
    type: String 
    trim: true 
    required: true 

    fanclub_image: 
    type: String 
    trim:true 
    required:true 

    access: 
    type: String 
    trim: true 
    required: true 

    joinedOn: 
    type: Date 
    default: Date.now 
    required: true  

exports.FanClubMemberSchema = FanClubMemberSchema 
+0

你得到任何错误?他们是什么? – coryj

+0

没有错误。它说,一个文件受到影响,但没有'err' – Shamoon

+0

我有类似的问题。 –

回答

3

默认情况下,update操作将只更新第一个文件它m atches。所以这只会更新第一个粉丝的fanclubs数据,其中包含fanclub_id。所以我认为它可能正在工作,但是您没有检查已更新的文档fan

要更新所有球迷们的数据,您需要启用multi选项:

Fan.update query, fan_update, { multi: true }, (err, numAffected) -> 
    console.log err 
    console.log numAffected