【问题标题】:Proper way to make a mongoose schema for a dynamic number of key/value pairs为动态数量的键/值对创建猫鼬模式的正确方法
【发布时间】:2015-11-13 00:35:29
【问题描述】:

我有一个字数统计函数,它返回一个带有一组键值对的对象。像这样:{a: 4, tale: 3, of: 8, two: 3, cities: 3 }

显然这个对象可以有不同的长度并且有不同的键/值对。我想将此数据添加到 Mongodb 中的“文章”文档中。使用 mongoose.js 这是我能想到的最好的模式。我担心 mongo 正在创建大量带有一个键/值对和一个 ID 的“Word”文档。有没有更好的办法?

在 /models/article.js 中

mongoose.Schema({
  wordcounts: [wordSchema]
})

在 /models/word.js 中

mongoose.Schema({
  word: String,
  count: Number
})

所以它最终看起来像:

[{
_id: 3980923urjf0e232902343252,
wordcounts: [
  {_id: 2039840297502938402934, word: "Apple", count:3}, 
  {_id: 20398sdfsdfsdfaaa4asd3, word: "Banana", count:5}
  ]
}]

有没有更好的办法?

【问题讨论】:

    标签: javascript node.js mongodb mongoose


    【解决方案1】:

    如果不需要索引,可以使用Schema.Types.Mixed(见:http://mongoosejs.com/docs/schematypes.html

    否则,您不必定义子集合,因为您可以将其定义为:

    mongoose.Schema({
      wordcounts: [{
        word: String,
        count: Number
      }]
    })
    

    【讨论】:

    • 谢谢,我试试看!
    • 这行得通!它还为 wordcounts 数组中的每个单词文档分配一个 id。
    猜你喜欢
    • 2015-03-25
    • 2017-10-18
    • 2021-04-16
    • 2012-04-22
    • 1970-01-01
    • 2020-09-12
    • 2019-02-20
    • 2019-09-19
    相关资源
    最近更新 更多