查询无键嵌套对象中的属性


Query property in keyless nested object

我的数据结构如下:

parent: [
    {
        val1: 'some data',
        val2: 'some data'
    },
    {
        val1: 'some data',
        val2: 'some data
    }
]

如果我想在"父"数组中的所有嵌套对象中查询属性"val1",是否有一种简洁的方法来做到这一点,即使对象没有键?

编辑:把问题扩展一下。

基本上,我希望能够在实际查询中根据val1检查值,而不是获取数据库的每一行,然后用PHP遍历它们。

我不知道数组中对象的数量,所以我不能直接查询它们,即$collection->find(array('parent[0]' => 'some data'))。我希望能够做到相当于"找到所有行,其中属性val1被设置为____包含在'父'数组的对象。

您可以使用$elemMatch来匹配键包含对象数组的文档。

db.myCollection.find({ parent: { $elemMatch: { val1: someValue }}});

这是mongo代码,您必须将其转换为PHP才能通过mongo驱动程序访问。