【问题标题】:MongoDB querying nested documents with filtersMongoDB 使用过滤器查询嵌套文档
【发布时间】:2021-04-22 07:40:56
【问题描述】:

我的 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);

 

【问题讨论】:

  • 你的问题是什么?
  • @Ivan 我想获取 DELETEFLAG 设置为 1 的所有联系人。

标签: php arrays mongodb filter find


【解决方案1】:

如果我明白,你可能想要这个:

db.collection.aggregate([
  { $unwind: "$CONTACT" },
  {
    $match: {
      "CONTACT.DELETEFLAG": "1",                
    },
  },   
]);

Yopu 使用 $unwind 破坏联系人中的所有文档,因此,使用 $match 仅获取具有 CONTACT.DELETEFLAG = 1 的新生成文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-25
    • 2016-08-16
    • 2018-05-10
    • 1970-01-01
    • 2015-02-10
    • 2012-10-17
    • 2016-05-07
    相关资源
    最近更新 更多