node.js - MongoDB:查询以将数组中的每个元素与条件匹配

标签 node.js arrays mongodb mongoose mongodb-query

我有一个文档集合(事件),比如,

[{
    _id: 1,
    followerRange: [
        {min: 5000, max: 50000, type: 'instagram'},
        {min: 1000, max: 5000, type: 'facebook'},
        {min: 1000, max: 25000, type: 'youtube'},               
    ]
},{
    _id: 2,
    followerRange: [
        {min: 10000, max: 50000, type: 'instagram'},
        {min: 5000, max: 10000, type: 'facebook'},
        {min: 10000, max: 100000, type: 'youtube'},               
    ]
},{
    _id: 3,
    followerRange: [
        {min: 10000, max: 500000, type: 'instagram'},
        {min: 10000, max: 100000, type: 'facebook'},
        {min: 50000, max: 100000, type: 'youtube'}, 
        {min: 50000, max: 100000, type: 'twitter'},              
    ]
}]

这表明,在特定社交 channel 上参加事件所需的最低关注者/订阅者人数是多少。

现在,一个用户有三个 channel ,比如,

[{
   type: 'instagram',
   followers: 7000
},{
   type: 'facebook',
   followers: 3000
},{
   type: 'youtube',
   followers: 12000
}]

现在,要向该用户显示的事件集合的所需输出将是 -

[{
    _id: 1,
    followerRange: [
        {min: 5000, max: 50000, type: 'instagram'},
        {min: 1000, max: 5000, type: 'facebook'},
        {min: 1000, max: 25000, type: 'youtube'},               
    ]
}]

解释:

  1. 因为用户拥有事件 1 所需的所有 channel 。
  2. 此外,各个 channel 的用户关注者数量也满足最小、最大范围的标准。
  3. 基本上,事件集合的输出将基于不同的用户及其 channel (和关注者)。

请帮我弄清楚如何根据活跃用户( channel )过滤事件。谢谢:)

最佳答案

我建议您像这样更改事件集合的结构:

{
    _id: 1,
    followerRange: {
        instagram: {min: 5000, max: 50000},
        facebook: {min: 1000, max: 5000},
        youtube: {min: 1000, max: 25000}          
    }
}

那就简单了:

var instagramFollowers = 100;
db.events.find({"followerRange.instagram.min":{$lt: instagramFollowers}}, "followerRange.instagram.max":{$gt: instagramFollowers}}, ... etc.)

关于node.js - MongoDB:查询以将数组中的每个元素与条件匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66007423/

相关文章:

node.js - Mongoose Populate Virtuals 不起作用并返回 null

使用 Plates 进行 Javascript (nodejs) 模板化

mysql - 如何在 Node js中返回嵌套的JSON

javascript - 将文件从 Apache 提供给 Javascript

java - 基于另一个数组的排序进行排序

java - 在mongodb中使用AND查询嵌入对象

node.js - 当从源代码管理下载更新的 package.json 时,是否可以使 Visual Studio 调用 npm install ?

javascript - 使用不同的对象数据数组更新对象数组

c - 使用 C 程序计算数组中间元素的总和

mongodb - 无法连接到配置的 mongo 实例(连接被拒绝)