node.js - 这个 mongoose 部分更新有什么不正确的地方

标签 node.js mongodb mongoose

我有以下称为场景的架构

var scenarios = new Schema({
    title: 'String',
    type: 'String',
    description:  'String',
    authorId:  'String',
    presentation: [presentations_schema],
    revision: 'String',
    createDate: 'String',
    updateDate: 'Date',
    active: 'Boolean',
    display:  'Boolean',
    video: [video_schema],
});

我正在尝试更新演示文稿架构中的字段

var scenario_presentations = new Schema({
    scenarioId:  'String',
    pageLocation:  'String',
    pageNumber: [Number],
    syncManifest:  [Number],
    caption:'String',
    createdDate:  'Date',
    updateDate:  'Date',
    active: 'Boolean',
    display: 'Boolean'
});

我尝试根据此处的答案运行更新 Partial update of a subdocument with nodejs/mongoose

这是我的尝试

var scenarios = require('../models/scenarios').Scenarios;
exports.updateScenario = function (req,res){

    scenarios.update({_id: '52cd8f43c1e8ba5009000008', presentation_id: '52cd8f43c1e8ba5009000009'},
            {$set: { 'presentation.$.pageLocation': 'someUrl'}},
                function(err, numberAffected, rawResponse) {
            if (err) {
                console.log(err);
                console.log('error returned');
                res.send(500, { error: 'Failed insert'});
            }

            if (!numberAffected) {
                console.log(rawResponse);
                res.send(403, { error: 'No rows affected' });
            }
            res.send(200);
        });

我不断收到if (!numberAffected) = true这是我尝试更新的文档

{
  authorId: "Austin(ShouldBeAHash)",
  revision: "1",
  active: true,
  display: true,
  sortOrder: 0,
  title: "sdfg",
  description: "gfds",
  _id: ObjectId("52cd8f43c1e8ba5009000008"),
  bundleId: [],
  video: [
    {
      thumbnailLocation: "someUrl",
      videoLocation: "SomeUrl",
      _id: ObjectId("52cd8f43c1e8ba500900000a")
    }
  ],
  status: [],
  presentation: [
    {
      pageLocation: "",
      _id: ObjectId("52cd8f43c1e8ba5009000009"),
      syncManifest: [
        0
      ],
      pageNumber: [
        0
      ]
    }
  ],
  subcategories: [],
  categories: [],
  __v: 0
}

最佳答案

update 调用的选择器参数中,presentation_id 应为 'presentation._id':

scenarios.update({
    _id: '52cd8f43c1e8ba5009000008', 
    'presentation._id': '52cd8f43c1e8ba5009000009 }, ...

关于node.js - 这个 mongoose 部分更新有什么不正确的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21005111/

相关文章:

node.js - 使用全局二级索引的DynamoDB表查询项

javascript - 如何从 Firefox 插件连接到 mongodb

javascript - Node.js/MongoDB : How can I use module. 导出以将 localhost 数据库 url 传递给 server.js 文件?

mongoose - 如何使用 Mongoose 设置 'cursorTimeoutMillis'

node.js - 带游标的 Mongodb native 聚合

javascript - 如何在 Javascript 中检索 get 请求的值

node.js - ES6 异步/等待、ExpressJS 和 Postgres 事务

node.js - NodeJs 不是在 MongoDb 中创建数据库吗?怎么解决呢?

node.js - Mongoose 复合索引创建字段顺序

angularjs - 如何将对象推送到空数组中