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:["new york","los angeles","chicago","san francisco"]}})

这将返回与集合中的某些内容匹配的城市数组。在上面的示例中,您将返回: ["chicago","new york"]

您现在可以从原始数组中减去这些元素并获得所需的结果。

关键是进行不同的查询(而不是获取所有结果)并将查询限制为您关心的城市,而不是您的集合所代表的所有城市。

于 2012-10-10T22:51:53.950 回答
0

数组减法是进行此操作的唯一方法,因为即使您使用任何 mongodb 驱动程序并且如果它支持此功能,它最终也会做同样的事情。

MongoDb 上的查询将始终返回包含在其中的值或空值。所以你必须取值并做一个数组减法。

于 2012-10-10T21:39:28.420 回答
0

你的收藏中有昏迷吗?

{{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 回答