【发布时间】:2017-01-19 14:39:50
【问题描述】:
我有一个 MongoDB 集合,其中包含以下结构的文档(不感兴趣的部分省略了):
{
displayFieldId: "abcd",
fields: [
{
fieldId: "efgh",
value: "cake"
},
{
fieldId: "abcd",
value: "cheese"
},
....
],
....
}
我想对此集合运行查询以仅获取fields 数组中fieldId 与文档的displayFieldId 匹配的元素。因此,对上述文档的查询结果应该是:
{
fields: [
{
fieldId: "abcd",
value: "cheese"
}
],
....
}
我构造了以下查询。它可以满足我的要求,但 displayFieldValue 是硬编码的
db.containers.find({}, {
fields: {
$elemMatch: {
fieldId: "abcd"
}
}
});
有没有办法让它查看文档的displayFieldId 并使用该值而不是硬编码的"abcd"?
服务器正在运行 MongoDB 3.2.6
如果可能的话,我想在没有聚合的情况下这样做,但如果不能这样做,那么聚合将不得不这样做
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework