给定具有以下模式的模型foo
;
{
a: String,
b: [{c: String, d: String}]
}
假设a
的值是唯一的,并假设给定c
文档中foo
的值是唯一的。如果我分别有a
和c
的值 A 和 C ,则 A 唯一标识{{1文档和 C 唯一标识foo
子文档。那么,是否有可能伪造一个向我返回foo.b
的价值的查询?
从概念上讲,
foo ----(find({a: A }))-----> foo_document -----(find({c: C }))------> foo_subdoc -------(select(d))----&gt ; value_of_d
给出了足够的信息,我只是不知道Mongoose是否有这样的机制。
答案 0 :(得分:1)
您可以使用$elemMatch
投影运算符来识别匹配的b
元素以包含:
foo.find({a: A}, {b: {$elemMatch: {c: C}}}, function(err, doc) {
// doc.b[0].d contains the value of d you're looking for.
});