MongoDB在查询列表中选择所有where字段值

哈宝

如何在MongoShell中实现SQL以下?

Select TableA.* from TableA where TableA.FieldB in (select TableB.FieldValue from TableB)

Mongo doc提供了一些示例

db.inventory.find( { qty: { $in: [ 5, 15 ] } } )

我希望该数组可以从另一个查询中动态获取。是否有可能?

扩展我的问题

我有一个bot名字集合

机器人集合

{
    "_id" : ObjectId("53266697c294991f57c36e42"),
    "name" : "teoma"
}

我有一个用户流量集合,在该流量集合中,我有一个字段 useragent

userTraffic集合

{
    "_id" : ObjectId("5325ee6efb91c0161cbe7b2c"),
    "hosttype" : "http",
    "useragent" : "Mediapartners-Google",
    "is_crawler" : false,
    "City" : "Mountain View",
    "State" : "CA",
    "Country" : "United States"
}

我想选择所有useragent包含任何bot集合名称的用户点击量文档

这就是我想出的

var botArray = db.bots.find({},{name:1, _id:0}).toArray()

db.Sessions.find({
    useragent: {$in: botArray}
    },{ 
        ipaddress:1
        })

在这里,我相信它等于比较,但我希望它像%%比较一样

得到结果后,我想更新该结果集,因为is_crawler = true

尝试过这样的事情,没有帮助

db.bots.find().forEach( function(myBot) {
    db.Sessions.find({
        useragent: /myBot.name/
        },{ 
            ipaddress:1
            }) 
     });

循环浏览记录的另一种方法,但未找到匹配项。

var bots = db.bots.find( {
    $query: {}, 
    $orderby:{
        name:1}
        });
while( bots.hasNext()) {
    var bot = bots.next();
    //print(bot.name);
    var botName = bot.name.toLowerCase();
    print(botName);
     db.Sessions.find({
        useragent: /botName/,
        is_crawler:false
        },{ 
            start_date:1,
            ipaddress:1,
            useragent:1,
            City:1,
            State:1,
            Country:1,
            is_crawler:1,
            _id:0
        })
    }
哈宝

最后,这就是我可以实现的方式。

// Get a array with values for name field
var botArray = db.bots.find({},{name:1}).toArray();

// loop through another collection
        db.Sessions.find().forEach(function(sess){
            if(sess.is_crawler == false){ // check a condition
                 // loop in the above  array
                botArray.forEach(function(b){
                //check if exists in the array
                   if(String(sess.useragent).toUpperCase().indexOf(b.name.toUpperCase()) > -1){
                        db.Sessions.update({ _id : sess._id} // find by _id
                        ,{
                            is_crawler : true // set a update value
                            },
                            {
                                upsert:false // do update only
                            })
                    } 
                  });
            }
        });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB在查询列表中选择所有where字段值

来自分类Dev

添加从列表框中选择的所有值

来自分类Dev

从表中选择与子查询的所有值匹配的所有值

来自分类Dev

从列表视图中选择所有

来自分类Dev

如何在值列表中选择所有具有属性值的对象?

来自分类Dev

C#MongoDB从字段中选择字段列表

来自分类Dev

如何在从下拉列表中选择值时刷新所有下拉列表

来自分类Dev

从多个表中选择所有值

来自分类Dev

在逗号分隔的字符串中选择可观察数组的所有字段值

来自分类Dev

从微调器中选择值后,必须启用剩余的所有字段

来自分类Dev

(Impala) 在字段中选择最常见的值会导致“选择列表中不支持子查询”

来自分类Dev

Oracle SQL-从查询中选择所有最大列值

来自分类Dev

从列表中的linq查询中选择特定字段

来自分类Dev

在jQuery的所有列表框中选择一个值

来自分类Dev

在下拉列表中选择值时,如何使Gridview的所有行成为可编辑模式

来自分类Dev

MongoDb查询未返回所有字段

来自分类Dev

MongoDb查询未返回所有字段

来自分类Dev

SQL查询-如何从表中选择计数所有值并显示所有计数及其ID?

来自分类Dev

如何在 Oracle 查询中从 XML 字段中选择值

来自分类Dev

从表A中选择所有字段,但从表B中选择单个字段?

来自分类Dev

从列表中选择值

来自分类Dev

在下拉列表中选择值显示隐藏的输入字段

来自分类Dev

在从列表中选择的专用字段中显示值

来自分类Dev

从包数据类型中选择所有字段

来自分类Dev

进行SQL查询以从多个列中选择值列表

来自分类Dev

从子查询接收的值列表中选择,可能为null

来自分类Dev

MySQL查询从一个表中选择不同的值,并从一个单独的表中选择所有值

来自分类Dev

如何使用MySQL查询在WordPress中选择所有类别?

来自分类Dev

如何在SQL查询中选择所有日期

Related 相关文章

  1. 1

    MongoDB在查询列表中选择所有where字段值

  2. 2

    添加从列表框中选择的所有值

  3. 3

    从表中选择与子查询的所有值匹配的所有值

  4. 4

    从列表视图中选择所有

  5. 5

    如何在值列表中选择所有具有属性值的对象?

  6. 6

    C#MongoDB从字段中选择字段列表

  7. 7

    如何在从下拉列表中选择值时刷新所有下拉列表

  8. 8

    从多个表中选择所有值

  9. 9

    在逗号分隔的字符串中选择可观察数组的所有字段值

  10. 10

    从微调器中选择值后,必须启用剩余的所有字段

  11. 11

    (Impala) 在字段中选择最常见的值会导致“选择列表中不支持子查询”

  12. 12

    Oracle SQL-从查询中选择所有最大列值

  13. 13

    从列表中的linq查询中选择特定字段

  14. 14

    在jQuery的所有列表框中选择一个值

  15. 15

    在下拉列表中选择值时,如何使Gridview的所有行成为可编辑模式

  16. 16

    MongoDb查询未返回所有字段

  17. 17

    MongoDb查询未返回所有字段

  18. 18

    SQL查询-如何从表中选择计数所有值并显示所有计数及其ID?

  19. 19

    如何在 Oracle 查询中从 XML 字段中选择值

  20. 20

    从表A中选择所有字段,但从表B中选择单个字段?

  21. 21

    从列表中选择值

  22. 22

    在下拉列表中选择值显示隐藏的输入字段

  23. 23

    在从列表中选择的专用字段中显示值

  24. 24

    从包数据类型中选择所有字段

  25. 25

    进行SQL查询以从多个列中选择值列表

  26. 26

    从子查询接收的值列表中选择,可能为null

  27. 27

    MySQL查询从一个表中选择不同的值,并从一个单独的表中选择所有值

  28. 28

    如何使用MySQL查询在WordPress中选择所有类别?

  29. 29

    如何在SQL查询中选择所有日期

热门标签

归档