0

我正在运行一个使用 构建的应用程序,Angular构建在Node//堆栈上。ExpressMongoDB

在我的 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);
               }
            });
        }
    });

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

4

1 回答 1

1

如何使用不同的查询:

db.products.distinct("designer")

db.collection.distinct()

于 2013-07-10T08:09:42.717 回答