为动态数量的键/值对制作mongoose模式的正确方法

Ken*_*and 6 javascript mongoose mongodb node.js

我有一个单词计数功能,它返回一个带有一组键值对的对象.像这样的东西:{a: 4, tale: 3, of: 8, two: 3, cities: 3 }

显然,该对象可以具有不同的长度并且具有不同的键/值对.我想将此数据添加到Mongodb中的"文章"文档中.使用mongoose.js这是我能想到的最好的架构.我担心mongo会创建大量的"Word"文档,其中包含一个键/值对和一个id.有没有更好的办法?

在/models/article.js中

mongoose.Schema({
  wordcounts: [wordSchema]
})
Run Code Online (Sandbox Code Playgroud)

在/models/word.js中

mongoose.Schema({
  word: String,
  count: Number
})
Run Code Online (Sandbox Code Playgroud)

所以它最终看起来像:

[{
_id: 3980923urjf0e232902343252,
wordcounts: [
  {_id: 2039840297502938402934, word: "Apple", count:3}, 
  {_id: 20398sdfsdfsdfaaa4asd3, word: "Banana", count:5}
  ]
}]
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

Ita*_*Ale 7

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

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

mongoose.Schema({
  wordcounts: [{
    word: String,
    count: Number
  }]
})
Run Code Online (Sandbox Code Playgroud)