2011-08-14 3 views
0

私はurls(リソース)のリストと各リソースのビューリストを持っています。それらはすべてmongodbデータベースに格納されています。 言い換えれば、resourceには多くの関連がありますviewsです。

リソースとビューの両方にフィー​​ルドurlが含まれています。このフィールドは、リソースとそのビューに関するWebサイトを識別するために使用しています。

私はVAR urls内のURLのリストを持っている、と私は返すようにしたいが、それらのそれぞれのために、同じ順序のURLでこのURLに関連付けられているビューの一つだけです。私は渡されたリストに関する結果の順序を保ち、オペレータで$を使用して

  • 問合せ:

    だから私にとって興味深い二つの基準があります。
  • $ inリストのキーごとに1つの項目のみを返します。もちろん

、私は私のコードで反復し、(pythonで)このような何かを行うことができます。

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

それは私の問題を解決することができる場合、私は$inオペレータが正確にどのように動作するかを知っているとしていませんしかし、私はそれが私が興味を持っている順序を保持しない恐れがあります。たぶん私はクエリ後に結果を並べ替えることができますか?

しかし、これはN個のURLに対してN個のクエリを作成することです。これは最適化されていないようです。これを避ける方法はありますか?

答えて

2

残念ながら、これは現時点では可能ではありません。 $ inには順序保証はありません(db.test.save({a:1}); db.test.save({a:2}); db.test.find({a:{$in:[2,1]}})で確認)、現在はフィールドを並べ替えるだけで、固定値の値セットはソートできません。

関連する問題