【问题标题】:Mongoose update push, delete in array猫鼬更新推送,数组中删除
【发布时间】:2016-05-25 15:55:24
【问题描述】:

我有一个猫鼬模型:

var schema = new Schema({
    loginName: {
        type: String,
        unique: true,
        required: true
    },
    hashedPassword: {
        type: String,
        required: true
    },
    salt: {
        type: String,
        required: true
    },
    created: {
        type: Date,
        default: Date.now
    },
    rooms: [{ _id: Schema.Types.ObjectId, loginName: [{ type: String }] }]
});

示例结果:

{
    _id: "56c0a986eeb118741109a45f",
    loginName: "MegaDaddgy",
    hashedPassword: "*****",
    salt: "******",
    __v: 10,
    rooms: [
        {
            _id: "56c0a986eeb118741109a461",
            loginName: [
                "MegaDaddgy"
            ]
        },
        {
            _id: "56c0d9e332f6ddc80ec7271c",
            loginName: [
                "MegaDaddgy"
            ]
        }
    ],
    created: "2016-02-14T16:21:26.272Z"
}

我需要什么:

  1. 在每个用户文档中搜索字段:rooms._id
  2. 在每个找到的用户文档的数组 loginName 中推送新的 loginName
  3. 删除数组中选定的登录名

示例参数:

  1. rooms._id : 56c0a986eeb118741109a461
  2. 登录名:“约翰”

结果:

{
    _id: "56c0a986eeb118741109a45f",
    loginName: "MegaDaddgy",
    hashedPassword: "*****",
    salt: "******",
    __v: 10,
    rooms: [
        {
            _id: "56c0a986eeb118741109a461",
            loginName: [
                "MegaDaddgy", "John"
            ]
        },
        {
            _id: "56c0d9e332f6ddc80ec7271c",
            loginName: [
                "MegaDaddgy"
            ]
        }
    ],
    created: "2016-02-14T16:21:26.272Z"
}

示例参数:

  1. rooms._id : 56c0a986eeb118741109a461
  2. 登录名:“约翰”

结果:

{
    _id: "56c0a986eeb118741109a45f",
    loginName: "MegaDaddgy",
    hashedPassword: "*****",
    salt: "******",
    __v: 10,
    rooms: [
        {
            _id: "56c0a986eeb118741109a461",
            loginName: [
                "MegaDaddgy"
            ]
        },
        {
            _id: "56c0d9e332f6ddc80ec7271c",
            loginName: [
                "MegaDaddgy"
            ]
        }
    ],
    created: "2016-02-14T16:21:26.272Z"
}

我该怎么做?

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    您可以通过$pushJohn 推入loginName 数组中

    Model.update({'rooms._id': ObjectId('56c0a986eeb118741109a461')}, 
        {$push: {'rooms.$.loginName': 'John'}}, function(...));
    

    loginName数组到$pull删除John

    Model.update({'rooms._id': ObjectId('56c0a986eeb118741109a461')}, 
        {$pull: {'rooms.$.loginName': 'John'}}, function(...));
    

    【讨论】:

      猜你喜欢
      • 2019-10-13
      • 2022-12-22
      • 2016-02-28
      • 2016-01-29
      • 2019-03-22
      • 2021-01-22
      • 1970-01-01
      • 2018-09-19
      相关资源
      最近更新 更多