将MongoDB文档的字段值转换为变量

时间:2014-01-16 20:04:32

标签: mongodb shell find

我正在使用mongo的shell,并希望做的基本上等同于“SQL的select col INTO var”,然后使用var的值来查找同一个表中的其他行或其他行(连接)。例如,在PL / SQL中,我将声明一个名为V_Dno的变量。我还有一张名为Emp(EID,Name,Sal,Dno)的桌子。我可以访问员工100的Dno值,“从Emp中选择Dno到V_Dno,其中EID = 100)。在MongoDB中,当我找到所需的员工(使用其_id)时,我最终得到一个文档而不是值(一个字段)。从某种意义上说,我相当于SQL中的整行而不仅仅是一列。我正在做以下事情来找到给定的emp:

VAR V_Dno = db.emp.find ({Eid : 100}, {Dno : 1});

我想这样做的原因是使用字段的值从一个文档遍历到另一个文档。我知道我可以使用DBRef来完成它,但我想看看是否可以使用此方法将文档绑定在一起。 有人可以对此有所了解吗? 感谢。

2 个答案:

答案 0 :(得分:4)

find返回一个游标,让您迭代匹配的文档。在这种情况下,您需要使用findOne,因为它会直接返回第一个匹配的文档,然后使用点表示法来访问单个字段。

var V_Dno = db.emp.findOne({Eid : 100}, {Dno : 1}).Dno;

答案 1 :(得分:1)

以您的查询为出发点:

var vdno = db.emp.findOne({Eid: 100, Dno :1})

这将返回emp集合中的文档,其中Eid = 100且Dno = 1.现在我在vdno变量中有了这个文档,我可以将它“连接”到另一个集合中。假设您有一个Department集合,department集合中的文档可以手动引用emp集合中的_id字段。您可以使用以下内容根据变量中的值过滤部门集合中的结果。

db.department.find({"employee._id":vdno._id})