Mongodb 无法将查询结果映射到变量

Mongodb 无法将查询结果映射到变量,mongodb,mongodb-query,Mongodb,Mongodb Query,下面的代码在mongo shell中被多次使用 db.CourseContent.find({Actor: a, Object: obj}) 因此,我将查询结果推送到一个变量中以供进一步使用。但是,查询似乎正在更改或修改,无法进一步使用 旧代码:(这工作正常) 新代码:(使用变量存储查询结果时不起作用)bag.$idz不包含任何在旧代码中成功的值 var bag={} bag.$sri=[]; bag.$idz=[] var qry = db.CourseContent.find({Actor

下面的代码在mongo shell中被多次使用

db.CourseContent.find({Actor: a, Object: obj})
因此,我将查询结果推送到一个变量中以供进一步使用。但是,查询似乎正在更改或修改,无法进一步使用

旧代码:(这工作正常)

新代码:(使用变量存储查询结果时不起作用)bag.$idz不包含任何在旧代码中成功的值

var bag={}
bag.$sri=[]; bag.$idz=[]
var qry = db.CourseContent.find({Actor: a, Object: obj})
bag.$sri =qry.map( function(sri) {return sri.StatementRefId});
bag.$idz = qry.map( function(sri) {return sri._id});
有人能帮我找出哪里做错了吗?

问题是,该方法及其同伴在《犯罪》中返回一个只能使用一次的
光标。因此,您需要使用如下方法转换查询结果:

var qry = db.CourseContent.fin‌​d({ Actor: a, Object: obj }).toArray()
我建议您使用聚合框架返回这些值:

db.CourseContent.aggregate([ 
    { "$match": { Actor: a, Object: obj } },
    { "group": { 
        "_id": null, 
        "sri": { "$push": "$StatementRefId" }, 
        "idz": { "$push": "$_id" }
    }}
])
生成的
游标
对象包含一个文档。如果您在shell中,它会生成该文档,但是使用一些驱动程序,您需要迭代游标。

问题是,该方法及其同伴在犯罪中返回一个只能使用一次的
游标。因此,您需要使用如下方法转换查询结果:

var qry = db.CourseContent.fin‌​d({ Actor: a, Object: obj }).toArray()
我建议您使用聚合框架返回这些值:

db.CourseContent.aggregate([ 
    { "$match": { Actor: a, Object: obj } },
    { "group": { 
        "_id": null, 
        "sri": { "$push": "$StatementRefId" }, 
        "idz": { "$push": "$_id" }
    }}
])

生成的
游标
对象包含一个文档。如果您在shell中,它会生成该文档,但是使用一些驱动程序,您需要迭代光标。

您是否尝试将
toArray()
方法附加到光标
var qry=db.CourseContent.find({Actor:a,Object:obj}).toArray()
(i=0;i您如何使用
bag.$sri
bag.$idz
?这些是脚本中多次使用的整数元素数组,主要是在聚合框架中。您是否尝试将
toArray()
方法附加到光标?
var qry=db.CourseContent.find({Actor:a,Object:obj})。toArray()
如果我转换为数组,每次我需要循环加载元素时,都会正确地
var qry=db.CourseContent.find({Actor:“N1”,Object:“JSON1”}).toArray()用于(i=0;i如何使用
bag.$sri
bag.$idz
?这些是脚本中多次使用的整数元素数组,主要是在聚合框架中。如果我转换为数组,每次我都需要循环加载元素‌​d({Actor:“N1”,Object:“JSON1”}).toArray()for(i=0;ii如果我转换为数组,每次我需要循环加载元素时,对‌​d({Actor:“N1”,Object:“JSON1”}).toArray()用于(i=0;i