我得到了E QUERY TypeError: Object [object Object] has no method 'forEach'
我怎样才能得到每个结果?
cur = db[source_collection].runCommand('aggregate',
pipeline: pipeline
allowDiskUse: true)
cur.forEach (customer) ->
db[output_collection].update({'_id': customer._id},{
'$pull': {
'$records.items': {
$regex: /\s+/
}
}
})
答案 0 :(得分:0)
使用aggregate()
帮助程序,因为在2.6及更高版本中,aggregate()
帮助程序始终返回游标:
cur = db[source_collection].aggregate pipeline
cur.forEach (customer) ->
db[output_collection].update('_id': customer._id,
'$pull':
'records.$.items':
'$regex': /\s+/
)
答案 1 :(得分:0)
根据mongo aggregation runCommand 文档
使用aggregate命令返回游标是一个低级操作,适用于驱动程序的作者。
和
runCommand返回包含结果的文档
所以你写cur.result.forEach
答案 2 :(得分:0)
它虽然陈旧,但即便如此:
对于第一种情况,我认为它会有所帮助:
cur.result.forEach(
function(doc)
{
...
...
})
我还有更多可以为将来的问题添加更多内容:
db.runCommand(
{ aggregate: "MyCollectionName",
pipeline: [
{ $group :
{
_id : "$GroupColumnName"
,"count": { "$sum": 1 }
, AllDocs: { $push: "$$ROOT" }
}
},
{ "$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } }
],
allowDiskUse: true
}
).result.forEach(
function(doc)
{
doc.AllDocs.forEach(
function(docInternal)
{
print(docInternal._id);
}
);
})