当前位置: 首页 > 知识库问答 >
问题:

使用Mongoose for Node.js在Mongo文档的子数组中推送JSON

聂溪叠
2023-03-14

我有一个NodeJS应用程序,其中我使用mongoose库与我的mongo数据库通信

该应用程序是关于一个游戏,其中进行多个回合。并且每轮结束后,提交该轮的结果!我希望将值(一个json)推送到players.rounds。我有一个_id和一个players.id来确定推送的位置。

const gameSchema = new mongoose.Schema(
    {
        categories: [
            { type: String }
        ],
        countdown: Number,
        players: [{
            _id: false,
            id: String,
            rounds: [
                { type: Map, of: String }
            ],
            score: { type: Number, default: 0 },
            ready: { type: Boolean, default: false }
        }]
    }
);    

执行的位置:

Game.findOneAndUpdate(
    { _id: gameId, 'players.id': client.id },
    { $push: { 'players.$.rounds': values } }, function(err) {
    if (err) {
        console.log('ERROR when submitting round');
        console.log(err);
    }
});

它打印我没有错误,但db文档不受影响。players.rounds中的项目仍然为零。

共有1个答案

轩辕庆
2023-03-14

您需要更改架构对象。我们需要指定{strict:false}来更改Mongoose中插入的文档。

const gameSchema = new mongoose.Schema(
{
    categories: [
        { type: String }
    ],
    countdown: Number,
    players: [{
        _id: false,
        id: String,
        rounds: [
            { type: Map, of: String }
        ],
        score: { type: Number, default: 0 },
        ready: { type: Boolean, default: false }
    }]
}, {strict:false} ); 
 类似资料:
  • 我需要后端的帮助。我正在使用邮递员,这是我后端的模型: 我试图在代理数组中推送文档,但我遇到了一些错误。 路线和控制器如下: 这就是我得到的错误:(节点:9916)未经处理的PromisejectionWarning:CastError:CastToObjectId值“{departmentId:'60e27549c36af1272812c4e3'}”(类型对象)在模型“Department”的路

  • 问题内容: 我正在尝试从猫鼬文档中存储的集合中删除一项。我的文档如下所示: 我想删除SKU为12的金鱼。我正在执行以下操作: 当我这样做时,出现错误“ TypeError:无法读取未定义的属性’等于’”。我不明白为什么。 问题答案: 您需要,然后打个电话。用于顶级文档

  • 我有一份这样的文件: 我想通过将其与数量字段(2*800)相乘来更新价格字段,其中的结果将更新/分配给价格。(对于本例,价格更新为1600)。 更新后的文档: 我的选择查询如下: 我怎样才能做到这一点?

  • b)“Units”字段包含带有“period”字段的子文档(日期对象数组),其中给定的日期位于数组中的第一和第二元素之间。 数据结构如下所示: 我尝试使用.find()和.aggregate()的各种组合,例如在periol数组上使用$project和$filter,在unit._id上使用$elemmatch之后使用$elemmatch,但是没有用--我得到了诸如“不能在数组上使用$filter

  • 我有一份这样的文件 上面的文档可以这样概括如下,便于理解。 我需要增加nums子文档中数量的值,该值位于产品子文档中,基于其\u id。 这是我迄今为止所尝试的,但它不起作用,因为我不知道如何捕获nums对象内的\u id,以便更新子子文档数组中的特定对象。 我怎样才能做到这一点?

  • 我是新来的mongo。我有以下收藏。 文件: 请求: 文档集合中的typeId是文档类型的id,其中请求中的typeId是也可以为空的外部字段。如何获得以下输出。