【问题标题】:Updating subdocuments with Mongoose使用 Mongoose 更新子文档
【发布时间】:2012-10-27 18:01:45
【问题描述】:

好的,所以我正在尝试使用 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

【问题讨论】:

  • 您是否遇到任何错误?它们是什么?
  • 没有错误。它说有一份文件受到影响,但没有err
  • 我也有类似的问题..
  • 您可以发布Fan 的架构吗?
  • @JohnnyHK 更新了我的帖子以包含我的架构

标签: node.js mongodb coffeescript mongoose


【解决方案1】:

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

要更新所有粉丝的数据,您需要启用multi 选项:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    相关资源
    最近更新 更多