【问题标题】:PHP + MongoDB - Fetch entry from array inside collection with $elemMatch not workingPHP + MongoDB - 从集合内的数组中获取条目,$elemMatch 不起作用
【发布时间】:2013-11-27 15:45:35
【问题描述】:

我有以下对象:

{
    users: {
        _id: "users",
        entries: 
        [
            {
                _id: 1,
                username: "taxicala",
                password: "password"
            },
            {
                _id: 2,
                username: "guest",
                password: "guest"
            }
        ]
    }
}

我只想选择“条目”数组中的一个用户。我正在尝试以下方法:

$entry = $this->_users->find(
             array('entries' => 
                 array('$elemMatch' => 
                     array('username' => 'taxicala')
                 )
             )
         );

我得到的结果是一个空对象:

{ }

我无法通过 Google 或此处找到任何关于此的线索。难道我做错了什么?我错过了什么吗?还是 PHP 不支持“$elemMatch”?

谢谢!

【问题讨论】:

    标签: php mongodb mongodb-query


    【解决方案1】:

    $elemMatch 受支持,但就您的文档而言,您 entries 在用户 object 内。所以至少在你的查询中你必须输入array('users.entries' => ...)。我也不明白你为什么需要使用 $elemMatch。

    db.coll.find({"users.entries.username" : "taxacala"}) 输出用户名为“taxacala”的文档。

    【讨论】:

    • 谢谢!这对我有用,但是,我发现我以不正确的方式格式化了我的数据,我正在将一个用户对象添加到用户集合中。当您对某事不熟悉时,这就是您所得到的:D。但是你给我的答案是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2014-04-24
    • 1970-01-01
    • 2022-01-21
    • 2018-07-21
    相关资源
    最近更新 更多