【问题标题】:Trying to remove _id in an array. It does not seem to work试图删除数组中的 _id。它似乎不起作用
【发布时间】:2019-05-17 04:49:51
【问题描述】:

我正在尝试删除数组中的第二个玩家。但我尝试的一切都不起作用。任何帮助表示赞赏

这是存储的数据

{
    "_id" : ObjectId("5cdd9dfe331fa63911455c4f"),
    "name" : "goobers",
    "venue" : ObjectId("5cdc96a4f957961fed9316dd"),
    "league" : ObjectId("5cdc96b5f957961fed9316de"),
    "duespaid" : 1,
    "players" : [
            {
                    "_id" : ObjectId("5cdc96c7f957961fed9316fe"),
                    "captain" : 1
            },
            {
                    "_id" : ObjectId("5cdc96cbf957961fed9316ff")
            }
    ],
    "__v" : 1
}

这是我认为可行的方法

db.leagues.update({
    _id:ObjectId("5cdd9dfe331fa63911455c4f")
}, { 
   $pull: { 
         "players": {
               "_id": ObjectId("5cdc96cbf957961fed9316ff")
          }
   }
})

WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 })

这是架构

var mongoose = require("mongoose");

//Scheme setup

var teamSchema = new mongoose.Schema({

    name: String,

    venue: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "Venue"
        },

    league: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "League"
    },

    players: [{
        id: {
            type: mongoose.Schema.Types.ObjectId,
            ref: "Player"
        },

        captain: Number,
        name: String

        }],

    duespaid: Number

});

//var Campground = mongoose.model("League", leagueSchema); 

module.exports = mongoose.model("Team", teamSchema); 

【问题讨论】:

  • 我刚刚在问题中使用相同的文档尝试了上面给出的解决方案,它工作正常。您的查询没有任何问题。问题可能是其他问题,因此请使用有关架构和代码的更多详细信息更新问题。
  • 好的,谢谢。我在上面发布了架构。我认为问题可能是我如何拥有 id:{ ref:"players"} .... 但我不确定

标签: arrays node.js mongodb mongoose


【解决方案1】:

我现在解决了这个问题……问题出在我的架构设置中……猫鼬不喜欢我调用对象 ID。现在我可以推送到正确的位置,一切正常。

【讨论】:

  • 是的,我相信这是因为 mongoose 会自动为每个对象添加一个虚拟字段 '.id',它是实际 _id 的简单 String-Getter。这可能是冲突的原因。
猜你喜欢
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
相关资源
最近更新 更多