这个MongoDB find()查询有什么问题(不是等于)?

时间:2014-06-11 04:05:41

标签: python mongodb pymongo

我试图查找具有不具有-1的状态的特定ID的所有文档。

为什么这会在pymongo中出现语法错误?

machine = db2.machine.find(
        {
            "account_id": account_id,
            "status": { $ne: -1 }
        }
   )

注意:

  1. account_id是一个值为ObjectId("5397929402b8541ae8a32349")
  2. 的变量
  3. 如果我删除status行,则可以正常使用。

1 个答案:

答案 0 :(得分:1)

与JavaScript不同,您需要将$ne包装到Python中的字符串中。

所以:

machine = db2.machine.find(
    {
        "account_id": account_id,
        "status": { "$ne": -1 }
    }
)

这是因为在Python中定义字典时,你无法做到

{key: "one"}

你需要做

{"key": "one"}

在第一种情况下,“key”指的是不存在的变量。您可以将第一种情况修改如下:

>>> key = "name"
>>> {key: "one"}
{'name': 'one'}

您的案例中的另一个复杂因素是您尝试访问名为$ne的变量,该变量是无效的变量名称。