Can';是否使用MongoDB更新或查询嵌入的子文档?现在怎么办?

Can';是否使用MongoDB更新或查询嵌入的子文档?现在怎么办?,mongodb,mongoose,nosql,Mongodb,Mongoose,Nosql,我对过去的所有RDBMS偏见进行了NoSQL测试。但我相信。现在我发现自己在一个项目中工作了3个月,而我们坚持RDMS原则的确切原因似乎让我很恼火。我想我刚刚在stackoverflow上发现,我不能使用两次嵌入式阵列。我像一个好的酷爱饮酒者一样遵循noSQL、嵌入式文档方法,感觉自己被出卖了。在我发誓不使用noSQL并回去重构我的整个代码库以坚持新的“规范化”模型之前,我想在这里介绍一些非sql拥护者 以下是我的模型,其中使用了一个带有嵌入式文档的大文档和works: var mongoose

我对过去的所有RDBMS偏见进行了NoSQL测试。但我相信。现在我发现自己在一个项目中工作了3个月,而我们坚持RDMS原则的确切原因似乎让我很恼火。我想我刚刚在stackoverflow上发现,我不能使用两次嵌入式阵列。我像一个好的酷爱饮酒者一样遵循noSQL、嵌入式文档方法,感觉自己被出卖了。在我发誓不使用noSQL并回去重构我的整个代码库以坚持新的“规范化”模型之前,我想在这里介绍一些非sql拥护者

以下是我的模型,其中使用了一个带有嵌入式文档的大文档和works:

var mongoose = require('mongoose'),
Schema = mongoose.Schema,
User = mongoose.model('User');

var Entry = new Schema({
   text: String,
   ups: Number,
   downs: Number,
   rankScore: Number,
   posted: { 
     type: Date, 
     default: Date.now 
   },
   postedBy: {
     type: mongoose.Schema.Types.ObjectId,
     ref: 'User'
   }
});    

var boardSchema = new Schema({
  theme: String,
  created: {
    type: Date,
    default: Date.now
  },
  owner: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'
  },
  entered: {
    type: Boolean,
    default: false
  },
  entries: [Entry],
  participants: [{
    user: { type: mongoose.Schema.Types.ObjectId, ref: 'User'},
    date: { type: Date, default: Date.now },
    topTen: [ { type: mongoose.Schema.Types.ObjectId, ref: 'Entry'} ]
  }]
});
mongoose.model('Board', boardSchema);
基本上,我想按Board.\u id查询文档,然后在其中participants.user==req.user.id,我想添加到topTen[]数组中。注意:参与者[]是文档中的一个数组,topTen是参与者[]中的一个数组。我还发现了其他类似的问题,但有人向我指出了一个Jira项目,它看起来不允许在多个嵌入式阵列中使用$positional操作。现在没有办法这样做吗?或者,如果有人对如何为我的文档建模提出了建议,这样我就不必使用新的规范化参考模型重新编写文档了……请提供帮助

以下是我在网上找到的一些查询尝试。对我来说什么都不管用

更新({u-id:ObjectId('56910eed15c4d50e0998a2c9'),'participants.user.{u-id':ObjectId('56437f6a142974240273d862'),{$set:{'participants.0.topTen.$.entry':ObjectId('5692eafc64601ceb0b64269b')}


我读到你应该避免这种“嵌套”设计,但对于嵌入式模型来说很难做到。基本上,这句话对我说“不要嵌入”go“ref”.

如何使用NoSQL数据存储与您的问题无关,甚至使您的问题难以理解。事实上,我正在后退一步,阅读关于MongoDB的O'Reilly书籍。我已经做了一些我可以说出来的错误的事情。