2013-03-06 33 views
1

我正在尋找通過基於日期標記重複信息來查找我的收藏夾中的所有重複項。以下是我的嘗試,但我不確定如何在更新中使用cmdResult。任何線索?在MongoDB C++中過濾重複信息

//filter duplicates 
bson::bo cmdResult; 
bool ok = c.runCommand(dbcol, BSON("distinct" << "date"), cmdResult); 
c.update(dbcol,Query("date"<<cmdResult<<NOT<<"_id"), BSON("$set"<<BSON("noise"<<"true")), false, true); 

回答

0

「distinct」命令將返回集合中所有唯一「日期」值的列表。但是你需要的是一個不止一次出現的「日期」值列表。

您可以通過「日期」分組和計數的條目,然後> 1匹配的計數使用aggregate命令,得到這個列表:

aggregate([ 
    { $group: { "_id": "$name", count: {$sum:1} } }, 
    { $match: { $gt: [ count, 1 ] } } 
]) 

你會然後更新您的集合(多:真)通過查詢「日期」,在列表中,設置了「噪音」字段:

update({"name": {$in: [<list>]} },{$set: {"noise": true} }, true, false) 

有關聚集的幫助,請參閱http://docs.mongodb.org/manual/reference/aggregation/