我的 MongoDB 文档看起来像这样 -
{
"VENDOR_ID": "101",
"NAME": "Test",
"DELETEFLAG": "1",
"DATETIME_MODIFIED": "2021-04-22 05:31:27am",
"CONTACT": [{
"CONTACT_ID": "111",
"CONTACT_TYPE": "CONTACT",
"DELETEFLAG": "1",
"LID": "197",
"USER_ID": "101",
"VALUE": "222222222222"
}, {
"CONTACT_ID": "222",
"CONTACT_TYPE": "EMAIL",
"DELETEFLAG": "1",
"LID": "197",
"USER_ID": "101",
"VALUE": "Test@gmail.com"
}, {
"CONTACT_ID": "333",
"CONTACT_TYPE": "CONTACT",
"DELETEFLAG": "2",
"LID": "197",
"USER_ID": "101",
"VALUE": "444444444444"
}, {
"CONTACT_ID": "444",
"CONTACT_TYPE": "CONTACT",
"DELETEFLAG": "2",
"LID": "197",
"USER_ID": "101",
"VALUE": "888888888888"
}]
}
I want to fetch all the Contacts for which the **DELETEFLAG** is set to 1.
我的集合可以有多个供应商文档。
我正在使用 PHP 并获取所有 DELETEFLAG 设置为 1 的供应商及其联系人。我的查询看起来像这样 -
$filterproduct = array(
"CONTACT.DELETEFLAG"=>'1',
"DELETEFLAG" => '1',
"LID"=>$LID,
);
$resultproduct1 = $this->GetMany($collectionName,$filterproduct,$fetchArr);
答案 0 :(得分:0)
如果我明白,你可能想要这个:
db.collection.aggregate([
{ $unwind: "$CONTACT" },
{
$match: {
"CONTACT.DELETEFLAG": "1",
},
},
]);
Yopu 使用 $unwind 破坏所有与联系人联系的文档,因此,使用 $match 仅获取 CONTACT.DELETEFLAG = 1 的新生成文档。