使用$ addToSet(aggregate)将对象添加到具有一个或多个不同属性的数组

时间:2016-10-13 15:04:29

标签: node.js mongodb mongoose

steamid

好的,这是我的问题。我有一组带有唯一标识符$steamid的配置文件。我按personahistory进行分组,该功能正在按预期工作。我还想添加一个名为personaname的新字段(不在模式中),该字段具有基于文档的另一个属性DISTINCT的对象数组,称为$addToSet

我尝试在mongoose参考文档之后使用$group: { _id : "$steamid", profile : { $first : "$$ROOT" }, personahistory : { $addToSet : "$personaname" } } ,但到目前为止只能使用它来创建该属性的数组:

{
   "_id": "1234567890",
   "profile": { ... },
   "personahistory" : [
     "personaname1",
     "personaname2",
     "personaname3"
   ]
}

输出:

{
   "_id": "1234567890",
   "profile": { ... },
   "personahistory" : [
     {
       "_id": "1234567890",
       "personaname": "personaname1",
       ...
     },
     {
       "_id": "1234567891",
       "personaname": "personaname2",
       ...
     },
     {
       "_id": "1234567892",
       "personaname": "personaname3",
       ...
     }
   ]
}

相反,我希望输出符合以下几行:

{ 
  $addToSet : { 
    "_id": "$steamid",
    "personaname": "$personaname"
  }
}

我尝试过类似的事情:

personaname

但无济于事。

此外,如果甚至可以采取这种行为,我希望能够使用两个或更多DISTINCT字段。因此,获取avatarurlgulp.task('build:js', function() { var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); return gulp.src(config.js.src) .pipe(concat(config.js.concat)) .pipe(uglify({mangle:false})) // absence of this option is causing invalid characters .pipe(gulp.dest(config.js.dest)) }); 的所有唯一组合,并将其添加到集合中。

基本上,每次查询配置文件时都会有一条记录,但我只想根据这两个字段返回唯一的记录。

如果我还不够清楚,我会很乐意提供更多信息。

0 个答案:

没有答案