假设我有一系列城市名称和MongoDB城市名称集合。假设我的数组看起来像:
["San Francisco", "chicago", "New York", "Los Angeles"]
我的收藏品看起来像
{{cityName: "chicago"}
{cityName: "New York"}}
我想做的是执行一个返回旧金山和洛杉矶的查询。到目前为止,我唯一的想法是只执行查询,获取匹配,并从原始数组中进行数组减法(从而得到我的城市),但我想知道是否有办法在一步查询中执行此操作。
提前致谢!
答案 0 :(得分:2)
您需要针对MongoDB集合执行以下查询:
db.cities.distinct(“cityName”,{cityName:{$ in:[“new york”,“los angeles”,“chicago”,“san francisco”]}})
这将返回与集合中的某些内容匹配的城市数组。在上面的例子中,你会回来: [“芝加哥”,“纽约”]
您现在可以从原始数组中减去这些元素并获得所需的结果。
关键是要做一个独特的查询(而不是获取所有结果)并传递一个查询,将查询限制在您关注的城市,而不是所有由您的集合代表的城市。
答案 1 :(得分:0)
数组减法是继续使用它的唯一方法,即使你使用任何mongodb驱动程序,如果它支持这个功能,它最终会做同样的事情。
对MongoDb的查询将始终返回包含在其中的值或空值。所以你必须取值并做一个数组减法。
答案 2 :(得分: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);
}