Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将游标的结果插入MongoDB shell中的集合?_Mongodb_Mongodb Query - Fatal编程技术网

如何将游标的结果插入MongoDB 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集合填充任何内容

很抱歉,如果这是一个如此基本的问题,但我似乎找不到一个如何做到这一点的例子。我想编写一个shell脚本,从查找中构造一个文档,并将结果插入另一个集合……类似于以下内容,但以下内容不起作用:

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