0

都市名の配列と、都市名のMongoDBコレクションがあるとします。私の配列が次のようになっているとしましょう:

["San Francisco", "chicago", "New York", "Los Angeles"]

そして私のコレクションは次のようになります

{{cityName: "chicago"}
{cityName: "New York"}}

私がやりたいのは、サンフランシスコとロサンゼルスに戻るクエリを実行することです。これまでのところ、私の唯一のアイデアは、クエリを実行し、一致を取得し、元の配列から配列を減算することです(したがって、私の都市を取得します)が、ワンステップクエリでそれを行う方法があるかどうか疑問に思います。

前もって感謝します!

4

3 に答える 3

2

MongoDB コレクションに対して次のクエリを実行する必要があります。

db.cities.distinct("cityName", {cityName:{$in:["ニューヨーク","ロサンゼルス","シカゴ","サンフランシスコ"]}})

これは、コレクション内の何かに一致した都市の配列を返します。上記の例では、次のように返されます: ["chicago","new york"]

これらの要素を元の配列から減算して、目的の結果を得ることができます。

重要なのは、(すべての結果を取得するのではなく) 個別のクエリを実行し、コレクションによって表されるすべての都市ではなく、関心のある都市にクエリを制限するクエリを渡すことです。

于 2012-10-10T22:51:53.950 に答える
0

配列の減算は、mongodb ドライバーを使用している場合でも、これを進める唯一の方法であり、それがこの機能をサポートしている場合でも、最終的には同じことを行うことになります。

MongoDb のクエリは、それに含まれる値または null 値を常に返します。したがって、値を取得して配列の減算を行う必要があります。

于 2012-10-10T21:39:28.420 に答える
0

あなたのコレクションにcomaはありますか?

{{cityName: "chicago"},
{cityName: "New York"}}

はいの場合、次のことができます。

for( var i in collec ){
  var cityname = collec[i]['cityname'];
  // if you use jquery
  var getcity = $.grep( yourarray, function(n,i){
   return n == cityname;
  });
  // getcity in an array with all matching elements
  console.log(getcity);
}
于 2012-10-10T21:43:49.340 に答える