2014-06-11 56 views
0

我正在嘗試查找某個ID不具有-1狀態的所有文檔。這個MongoDB find()查詢(不等於)有什麼問題?

爲什麼這會在pymongo中給出語法錯誤?

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

注:

  1. ACCOUNT_ID與價值ObjectId("5397929402b8541ae8a32349")
  2. 變量如果我刪除了status線,它工作正常。

回答

1

與JavaScript不同,您需要將$ne換成Python中的字符串。

所以:

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

這是因爲在Python當你定義一個字典,你不能做

{key: "one"} 

你需要做的

{"key": "one"} 

在第一情況下,「鍵」是指不存在的變量。

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

你的情況額外的併發症是您試圖訪問一個名爲$ne變量,它是一個無效的變量名:您可以如下ammend尚屬首例。

+0

謝謝!我會盡快給你答覆。出於好奇,是因爲$是一個保留字符,所以它需要放入一個字符串? – okoboko

+0

更新了我的回答,以便您可以看到發生了什麼 –