簡體   English   中英

更新/更新插入/插入到 Meteor 和 MongoDB 中的嵌套集合

[英]Updating/upsert/insert to a nested collection in Meteor & MongoDB

我有這個集合和架構:

Words = new Mongo.Collection("words");

WordsSchema = new SimpleSchema({
  date: {
    type: String
  },
  owner: {
    type: String
  },
  entries: {
    type: [Entry]
  }
});

Entry = new SimpleSchema({
  post: {
    type: String
  },
  elapsed_time: {
    type: Number
  },
  createdAt: {
    type: Date
  }
});

Words.attachSchema( WordsSchema );

我只是想通過 UPSERT(或使用 upsert = true 更新)向該集合添加條目,如下所示:

Words.update({
      date: today,
      owner: Meteor.userId()
    }, {
      $push: {
        entries: { post: post, elapsed_time: elapsed_time, createdAt: new Date() }
      }
    }, {
      upsert: true
    });

即,如果日期 = 今天(存儲為 'YYYY-MM-DD')和所有者 = userId 的對象存在,它只會添加特定條目。

但是我做錯了,因為我收到錯誤:“需要輸入”。

非常感謝任何幫助或想法! 謝謝。

我不確定這有什么問題。 但我猜 type: [Entry] 不受簡單模式的支持。 所以在這里你可以嘗試這兩種方法來實現相同的功能。 1. Marge 兩種模式。

WordsSchema = new SimpleSchema({
  date: {
    type: String
  },
  owner: {
    type: String
  },
  entries: {
    type: Array
  }
  "entries.$": {
    type: Object
  },
  "entries.$.post: {
    type: String
  },
  "entries.$.verified": {
    type: Boolean
  },
"entries.$.verified": {
    type: Boolean
  }
});

2. 通過使用 $ 你可以分離兩種模式

WordsSchema = new SimpleSchema({
  date: {
    type: String
  },
  owner: {
    type: String
  },
  entries: {
    type: Array
  }
  "entries.$": {
    type: Entry
  }
});

Entry = new SimpleSchema({
  post: {
    type: String
  },
  elapsed_time: {
    type: Number
  },
  createdAt: {
    type: Date
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM