2011-08-14 59 views
0

我有一個url列表(資源)以及每個資源的視圖列表,它們都是 ,存儲在一個mongodb數據庫中。換句話說,一個resource有許多相關的views

這兩個資源和視圖都包含一個字段url,我用它來識別資源和視圖的網站。

我有一個網址列表的VAR urls,我想以同樣的順序網址傳回的,爲他們每個人,只有與此URL相關聯的觀點之一。

所以在兩個標準是有趣的對我來說:使用運算符$

  • 查詢,對於保持我通過列表中結果的順序。
  • 只爲$ in列表中的每個鍵返回一個項目。

當然,我可以在我的代碼重複,做這樣的事情(在python):

views = [] 
for url in urls: 
    views.append(db.views.find_one({"url": url})) 

我不知道該怎麼$in運營商準確的行爲,如果它可以解決我的問題,但恐怕它不會保留我感興趣的訂單。也許我可以在查詢後對結果進行排序?

但是這意味着對N個urls進行N個查詢,這個查詢看起來並沒有被優化。有沒有辦法避免這種情況?

回答

2

不幸的是,這是不可能的。對於$ in沒有訂單保證(通過db.test.save({a:1}); db.test.save({a:2}); db.test.find({a:{$in:[2,1]}})進行驗證),目前您只能對字段進行排序,而不能對固定排序的值進行排序。