搜索MongoDB以返回参数的所有值

时间:2013-07-10 06:04:47

标签: javascript mongodb

我正在运行使用Angular构建的应用,该应用基于Node / Express / MongoDB堆栈构建。

在我的Mongo数据库中,我的对象看起来像这样:

{
    "infoLink" : "http://foo.com",
    "name" : "Fossil Watch",
    "gender" : "mens",
    "price" : "$166.44",
    "store" : "Store Name",
    "designer" : "Fossil",
},
{
    "infoLink" : "http://foo.com",
    "name" : "Timex Watch",
    "gender" : "mens",
    "price" : "$166.44",
    "store" : "Store Name",
    "designer" : "Timex",
},
{
    "name" : "Casio Watch",
    "gender" : "mens",
    "price" : "$166.44",
    "store" : "Store Name",
    "designer" : "Casio",
}

我想找到一种方法来搜索mongoDB以查找并列出一个参数中的所有元素。例如,我想搜索所有条目并提取它们的“设计者”值,以便返回:

record = ['Fossil', 'Timex', 'Casio']

在实践中,我有大约20,000条记录,我正在这里搜索,所以我希望它尽可能快速有效。

有没有办法这样做而不需要获取所有记录然后循环遍历每个记录以找到所需的参数并将其添加到数组?那个解决方案是这样的:

var arr=[];
db.products.find(criteria, function (err, record) {
        if (err) {
            console.log("Lookup Error: " + err);
        } else{
            record.forEach(function(data){
              if (arr.indexOf(data.designer) > -1){
                  arr.push(data.designer);
               }
            });
        }
    });

但我觉得这是一个非常笨重的方法。有更好的选择吗?

1 个答案:

答案 0 :(得分:1)

如何使用不同的查询:

db.products.distinct("designer")

db.collection.distinct()