从地图获取密钥并在一个查询中使用它检索数据

时间:2012-06-24 00:41:13

标签: mongodb

我在mongo中有两个集合。首先,是实际数据:

{ "_id" : "internal_key1", "data" : "some data1" }
{ "_id" : "internal_key2", "data" : "some data2" }
{ "_id" : "internal_key3", "data" : "some data3" }

另一个是由我的内部密钥的某些外部服务提供的密钥映射:

{ "_id" : "ext_key111", "internal" : "internal_key1" }
{ "_id" : "ext_key222", "internal" : "internal_key2" }
{ "_id" : "ext_key333", "internal" : "internal_key3" }

如果我只有外键,我可以用一个查询以某种方式检索数据(例如,给定“ext_key111”检索“某些数据1”)吗?当然,不计算类似eval的东西。

1 个答案:

答案 0 :(得分:1)

简短的回答是否定的。

您基本上要求加入,而MongoDB明确不允许加入。

然而,根据您的要求,您可以使用以下结构:

{ "_id" : "internal_key1", "ext_id": "ext_key111", "data" : "some data1" }

您可以在ext_id上创建其他索引。您甚至可以使其与您的数据相匹配。

db.ensureIndex({ ext_id: 1 }, { unique: true, background: true })