0

我在 user.js 文件的导出声明中有以下行:

 db.collection('myList').distinct('field1', 'field2'), function(err, items) {
        res.json(items);
 }

db 查找在 mongo 命令行中运行良好。但是,当我运行网页时,我得到:

 TypeError: string is not a function

我不确定目前如何进行。我应该在返回之前以某种方式将返回值转换为字符串吗?

谢谢。

4

2 回答 2

0

您的问题似乎没有明确定义,请考虑以下逻辑:

> db.info.insert({ field1: "this", field2: "that" })
> db.info.insert({ field1: "this", field2: "another" })
> db.info.insert({ field1: "this", field2: "that" })
> db.info.insert({ field1: "this", field2: "another" })
> db.info.distinct('field1', 'field2')
[ "this" ]

但你真正想要的是:

db.info.aggregate([
   {$group: {_id: { field1: "$field1", field2: "$field2" } } }
])

这使:

{
    "result" : [
            {
                    "_id" : {
                            "field1" : "this",
                            "field2" : "another"
                    }
            },
            {
                    "_id" : {
                            "field1" : "this",
                            "field2" : "that"
                    }
            }
    ],
    "ok" : 1
}

组合字段的不同结果。

我希望我们现在正在学习。

于 2014-02-19T14:35:20.513 回答
0

由于某些奇怪的原因,MongoSkin 抽象不提供对 MongoDB 'distinct' 方法的访问。为了让工作与众不同,我不得不使用本机 MongoDB 集合,而不是抽象的 MongoSkin 集合。这是我的做法

    var store = mongo.db(connectionString, ackOptions);
    store.open(函数(错误,响应){
         resp.collection(this.options.collection, {strict: true}, function(err, myCollection) {
            myCollection.distinct('tag',function(err,res){
                控制台日志(错误)
                控制台.log(res)
            })
        });
    })

于 2014-12-19T15:49:01.673 回答