数组”之类的查询?"/>
我如何在mongodb中进行类似“不包含其他值的数组”之类的查询?
我希望我不会错过任何明显的东西,但是我在任何地方都没有看到这样的语法。
我正在为在线课程提供商提供服务,用户可以按主题进行订阅。
- 一门课程可以有多个主题
- 用户必须订阅该课程的all个主题才能访问它
我知道如何发出类似{ topics: { $nin : ...allTheTopicsUserHaveNoAccessTo } }
的请求,但这迫使我首先获取所有“不允许的”主题。
是否有一种方法可以在一个呼叫中发出这种请求?
用户模型:
const userModel = {
allowedTopics: [ 'math', 'physics' ],
}
课程模式:
const courseModel = {
topics: [ 'math', 'physics', 'biology' ], // user need to have subscribed to those three to see it
}
回答如下:是的,可以做到。
与$setDifference
聚合,然后匹配空数组将完成此操作。
但是,这样的聚合管道将无法使用索引,并且必须从磁盘获取并检查每次运行的整个目录中的所有课程。
更多推荐
我如何在mongodb中进行类似“不包含其他值的数组”之类的查询?
发布评论