【问题标题】:Query MongoDb document by nested element通过嵌套元素查询 MongoDb 文档
【发布时间】:2015-03-01 06:25:29
【问题描述】:

我正在尝试找到使用 PHP 删除 mongoDB 记录的语法,但是我在互联网上找到的每个示例都只显示了如果删除条件是一级的如何做到这一点...

如果我有这样的 mongoDB 记录:

{ 
        "_id" : ObjectId("50d69d6a1d26a8a0c1eaecf8"), 
        "name" : "John",
        ...other fields...

我可以使用以下语法删除它:

$collection->remove(array('name' => 'John'));

这很好,但是我的问题是我需要查找删除的键是更下一层。

所以我有一个看起来像这样的记录:

{
    "_id" : ObjectId("54f2aaa3452a235c049000029"),
    "synthOrder" : {
        "orderId" : "899422",
        ...other fields...

我想删除 orderId 为 899422 的记录。 那么我的删除线会是什么样子呢?

我试过了:

$collection->remove(array('synthOrder' => array('orderId' => '899422')));

我觉得这是一个简单的语法问题,但我无法在网上找到任何示例。我很感激任何指点!

【问题讨论】:

    标签: php mongodb mongodb-query database


    【解决方案1】:

    这很简单,但也许是一个解释。您正在尝试的查询只会匹配看起来完全像这样的文档:

    {
        "synthOrder": {
            "orderId": "899422"
        }
    }
    

    意味着嵌套元素中只有“一个”元素,因为这是您的语法实际要求的。

    因此,MongoDB 使用"dot notation" 来引用单个嵌套元素:

    $collection->remove( array( 'synthOrder.orderId' => '899422'));
    

    这允许引用而不会看起来像“显式”文档,这是您以您尝试的形式所做的。

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 2016-08-16
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多