当mongodb中的每个字段都包含数组时,mongodb不允许在两个字段上创建索引的主要问题:
{a:[1,2], b: [8,9]}
正因为如此,我在解决下一个问题时遇到了困难。
收藏说明
收藏品名称:商品
目前的收集结构(简化)
folderDataArr: [{
_id: 1,
dateOfAddingIntoFolder: 01.01.11
}, {
_id: 2,
dateOfAddingIntoFolder: 01.01.12
}],
userDataArr: [{
_id: 100,
isRead: true,
dateOfRead: 01.0.10
}, {
_id: 101,
isRead: true,
dateOfRead: 01.02.31
}]
查询构建
我需要重新格式化我的结构以进行有效的查询:
问题是
如何解决此问题?
感谢您的帮助。
答案 0 :(得分:0)
是的,你必须在你的mongodb中重组你的收藏。由于您包含新实体“新闻项目”,而您的最终输出是未读的新闻项目。我建议按照方式。在此之前,我已经将您的数据可视化如下
usercollection
- user (email id, last logged in time)
NewsCollection
- newsitem (newsid,newsdata,createdtimestamp,updatedtimestamp)
每当更新新闻项目如创建,更新然后更改createdtimestamp,updatedtimestamp 分别
如果用户已登录,请选择旧的登录时间戳(在更新当前之前),并选择在createdtimestamp或updatedtimestamp中具有大于旧登录时间戳的所有新闻项。
注意:由于新闻条目和用户是独立的实体,因此不建议将它们保存在单个集合中。
注意*** :由于用户和新闻之间存在多对多的关系,因此尝试提供高用户特定的新闻更新需要更多的文档更新,或者您必须操作更多元素每个新闻/用户相关更改的数组。如果您尝试这样做,请考虑您的应用效果。
希望这会对你有帮助。