javascript - MongoDB:虚线字段对于存储无效

标签 javascript mongodb

我需要将一个对象添加到数组的第一个位置。在此示例中,它是数组 description.en

这是我的文档结构:

{
  _id: 'Aw5szXgeujrbhwY2r',
  description: {
    en: [
      {
        content: 'Need to change this',
        timestamp: 1480186254
      }
    ]
  }
}

这就是我尝试做到这一点的方式:

const name = 'description' // need to be dynamic
const language = 'en' // need to be dynamic

update = {
  [name + '.' + language]: {
    $position: 0,
    $each: [{
      content: 'New content',
      timestamp: Math.floor(Date.now() / 1000)
    }]
  }
}

return Content.update({ _id }, update)

但我确实收到错误MongoError:“description.en”中的虚线字段“description.en”对于存储无效。

最佳答案

您需要使用mongo的$push运算符:https://docs.mongodb.com/manual/reference/operator/update/push/#up._S_push

update = {
  $push: {
    [name + '.' + language]: {
       $position: 0,
       $each: [{
         content: 'New content',
         timestamp: Math.floor(Date.now() / 1000)
      }]
    }
  }
}

您还可以使用带有点表示法的$set来指定元素

update = {
  $set: {
    [name]: {
       [language + '.0']: {
          content: 'New content',
          timestamp
       }
    }
}

关于javascript - MongoDB:虚线字段对于存储无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49602282/

相关文章:

javascript - React Router 服务器端呈现错误 : Warning: Failed propType: Required prop `history` was not specified in `RoutingContext`

javascript - 改进这个数组数据模型

javascript - 如何在axios get之外设置变量

ruby-on-rails - rails +MongoDB : Find ObjectId bigger than given value

node.js - Express js URL 清理

javascript - 如何将边框半径添加到下拉菜单

javascript - 等待异步函数返回 true 或 false - 如何检查返回值?

mongodb - 当没有指定排序顺序时,MongoDB 如何对记录进行排序?

javascript - 如何在与 Sails 0.10.x 的一对多关系中引用关联模型

java - 在 java 中将 RFC3339 DateTime 转换为 Date