在MongoDB中,如果您有一个包含数组的文档,那么如何只投影该数组中与正则表达式匹配的项目?
例如,假设每个文档都是一个用户,并且每个用户都有一个联系人数组,其中一个示例文档如下所示:
let exampleDocument =
{
"_ID": "USRID",
"contacts":
[
{ name: "Non Jon" },
{ name: 'John Doe' },
{ name: 'John Smith' },
{ name: 'John Thompson' },
{ name: 'John Zebo' }
]
};
我想返回包含名称以/John.*/i
开头的联系人的所有用户文档,但是我只想在每个文档的contacts数组中投影名为John的联系人。 >
到目前为止,使用$运算符,我能预测的最多Johns只是每个文档中每个数组的第一个:
db.vendor.find({"contacts.name": /John.*/i}), {"contacts.name.$":1}).pretty();
我看到projection operators允许我仅显示数组中的第一个匹配项,但是我如何在不排除不匹配项的情况下返回该数组中的所有匹配项呢?
似乎应该有一个像$
这样的投影运算符,它不仅投影一个匹配项,还投影所有匹配项。