$ or的mongoDB中字段的多个条件

时间:2018-06-27 11:31:26

标签: mongodb

我想从MongoDB集合中检索所有文档,其中export PSYCOPG2_POSTGRESQL_URI="postgresql://user:password@/databasename?host=/cloudsql/project-name:region:database-instance-name" ./cloud_sql_proxy -instances=project-name:region:database-instance-name=tcp:5432 #somewhat later: python myserver.py 字段是数字或字符串,由所有数字(1、2、19或“ 4”,“ 19”, ...)

我查询:

users

...,并显示错误“未知运算符$ or”。

这有效:

db.getCollection('collection').find(
    { 
        users: { $or : [ { $type: [1, 16, 18, 19] },
                         { $regex: /^[0-9]+$/ } ]
               }
    }
)

为什么第一个变体不起作用?

2 个答案:

答案 0 :(得分:1)

$ or本身必须包含要查询的字段。您的第二个查询包含该字段。

$or :[{field_name:Match_expression},{field_name:Match_expression}...{field_name:Match_expression}]

答案 1 :(得分:0)

db.getCollection('collection').find( {
    $and : [
        { $or : [ { $type: [1, 16, 18, 19] } ] },
        { $or : [ {users:  { $regex: /^[0-9]+$/ } ] }
    ]
} )

这应该有效

编辑

This is where it was answered before