2012-08-12 107 views
0

Mongo不斷給我這條線上的語法錯誤;

existingVideo = self.request.root.db.videos.find_one({ '$or' : [ { '_id' : ObjectId(video["serverVideoID"]) } , '$and' : [ { '_id' : serverAuthorID } , { 'clientGUID' : video['clientGUID'] } ] ] }) 

但我看不出它有什麼問題。它看起來對我有效,但任何人都可以在這裏發現錯誤?

+0

'{ '$或':[{「'你確定你的陣列是否正確關閉? – Shaheer 2012-08-12 05:32:32

+0

您需要在{}中包含整個$和:..表達式,即在末尾添加{之前的$和和之間的]以及]。 – 2012-08-12 06:01:02

+0

@AsyaKamsky如果你在一個答案中重新寫我的行我會給你一個綠色支票 – zakdances 2012-08-12 06:05:51

回答

0

看起來您缺少$和子句中的一組{ }

您的查詢應該是:

existingVideo = self.request.root.db.videos.find_one( 
{ '$or' : 
    [ 
    { '_id' : ObjectId(video["serverVideoID"]) 
    } , 
    {'$and' : 
      [ { '_id' : serverAuthorID } , { 'clientGUID' : video['clientGUID'] } 
      ] 
    } 
    ] 
}) 
+0

謝謝你......但爲什麼$和需要包裹在{}中,而不是$或(除了第一個{}無論如何)? – zakdances 2012-08-12 06:14:52

+0

第一個{將$或表達式「包裝」爲JSON文檔。那麼$或者需要一個JSON文檔數組(其中{$和:[]}是一個)。 – 2012-08-12 06:19:07

+0

雖然當然$並且沒有必要 – Sammaye 2012-08-12 17:43:38

相關問題