如何将游标的结果插入MongoDB shell中的集合?
很抱歉,如果这是一个如此基本的问题,但我似乎找不到一个如何做到这一点的例子。我想编写一个shell脚本,从查找中构造一个文档,并将结果插入另一个集合……类似于以下内容,但以下内容不起作用:如何将游标的结果插入MongoDB shell中的集合?,mongodb,mongodb-query,Mongodb,Mongodb Query,很抱歉,如果这是一个如此基本的问题,但我似乎找不到一个如何做到这一点的例子。我想编写一个shell脚本,从查找中构造一个文档,并将结果插入另一个集合……类似于以下内容,但以下内容不起作用: cursor = db.Patients.find({},{"patient_id":1}) while (cursor.hasNext()) { db.newCollection.insertOne(cursor.next()); } 运行此操作时,不会向newCollection集合填充任何内容
cursor = db.Patients.find({},{"patient_id":1})
while (cursor.hasNext()) {
db.newCollection.insertOne(cursor.next());
}
运行此操作时,不会向newCollection集合填充任何内容,但也不会出现错误。在聚合框架中使用运算符
尝试此mongo查询:
db.Patients.aggregate([
{$project:{"patient_id":1}},
{$out: "NewCollection"}
])
或使用
或使用
在聚合框架中使用运算符
尝试此mongo查询:
db.Patients.aggregate([
{$project:{"patient_id":1}},
{$out: "NewCollection"}
])
或使用
或使用
如果将
cursor
声明为变量以防止shell在光标上迭代,则代码将正常工作:
var cursor = db.Patients.find({},{"patient_id":1})
while (cursor.hasNext()) {
db.newCollection.insertOne(cursor.next());
}
但您可能还希望为插入的文档分配新的\u id
值,因此您可以从文档中排除原始\u id
值,如下所示:
var cursor = db.Patients.find({},{"patient_id":1, _id:0})
while (cursor.hasNext()) {
db.newCollection.insertOne(cursor.next());
}
如果将
cursor
声明为变量以防止shell在光标上迭代,则代码将正常工作:
var cursor = db.Patients.find({},{"patient_id":1})
while (cursor.hasNext()) {
db.newCollection.insertOne(cursor.next());
}
但您可能还希望为插入的文档分配新的\u id
值,因此您可以从文档中排除原始\u id
值,如下所示:
var cursor = db.Patients.find({},{"patient_id":1, _id:0})
while (cursor.hasNext()) {
db.newCollection.insertOne(cursor.next());
}
关于shell脚本部分,我不确定,但我在下面添加了两种不同的方法供您参考。关于shell脚本部分,我不确定,但在下面添加了两种不同的方法供您参考。因此,您的第一个示例与我的示例非常接近。基本上,正如您所说,我只需要将“cursor”声明为var.short和sweet:),因此您的第一个示例与我的示例非常接近。基本上,正如您所说,我只需要将“cursor”声明为var