我正在使用聚合找到重复文档,然后我想移动 这些重复的文件进入另一个集合但我不知道怎么做 去做 。我尝试了许多方法,但无法在mongodb中完成。
outCursor = db.Working_newFooditem.find({}).toArray()
var length = outCursor.length
var i = 0;
var j = 0;
inCursor = db.Working_newFooditem.find({}).toArray()
while (j<=length) {
var outUniqueString = outCursor[j].uniqueName;
while (i<= length) {
var inUniqueString = inCursor[i].uniqueName;
if(inUniqueString === outUniqueString){
db.dupC.insert(inCursor[i])
db.Working_newFooditem.remove(inCursor[i]._id)
}i++
}j++
}
我有重复文档,所以我通过连接其他文档字段来创建uniqueName字段,但是这个uniqueName可能重复两次,因为集合中存在相同的文档,所以我试图找到重复uniqueName的文档然后想要将一个文档保存在testTemp集合中,并在abc集合中保留其他重复文档。
答案 0 :(得分:0)
好的,所以这里有可能的解决方案
db.Working_newFooditem.find({}).toArray((err, outCursor) => {
db.Working_newFooditem.find({}).toArray((err, inCursor) => {
var length = outCursor.length
var i = 0;
var j = 0;
while (j<=length) {
var outUniqueString = outCursor[j].uniqueName;
while (i<= length) {
var inUniqueString = inCursor[i].uniqueName;
if(inUniqueString === outUniqueString){
db.dupC.insert(inCursor[i])
db.Working_newFooditem.remove(inCursor[i]._id)
}i++
}j++
}
})
})
要获取数据 - 您应该为每个查找查询实现回调函数,您也应该将它们嵌套。
答案 1 :(得分:0)
我已经看到你的代码有mongoDB操作,但你没有回调也没有承诺,这是错误的
但假设这些操作返回my @data = (1..8, 25, 37);
my $fixed_length = 5; # number of points to always go into array
my ($v1, $v2, $v3, @ary) = splice @data, 0, 3+$fixed_length;
# (25 and 37 remain) The section above needs no changes in future
while (my $datum = shift @data) {
# deal with data that grows in time
}
,您可以更改类似的代码。
使用ES2017
Promises
语法
async/await