按嵌套元素查询 MongoDb 个文档

Query MongoDb document by nested element

我正在尝试找到使用 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')));

我感觉是一个简单的语法问题,但是我在网上找不到任何例子。感谢您的指点!

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

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

意思是嵌套元素中只有 "one" 元素,因为这是您的语法实际要求的内容。

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

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

这允许在不看起来像 "explicit" 文档的情况下进行引用,这就是您在尝试的表单中所做的。