4

我有这个收藏

{
    "name" : "montalto",
    "users" : [
        {
            "username" : "ciccio",
            "email" : "aaaaaaaa",
            "password" : "aaaaaaaa",
            "money" : 0
        }
    ],
    "numers" : "8",
    "_id" : ObjectId("5040d3fded299bf03a000002")
}

如果我想搜索一个名为 montalto 的集合和一个名为ciccio的用户,我将使用以下查询:

db.coll.find({name:'montalto', users:{username:'ciccio'}}).count()

但它不起作用。我哪里出错了?

4

2 回答 2

7

您必须使用点符号来匹配嵌入数组对象的内部:

db.coll.find({name: 'montalto', 'users.username': 'ciccio'}).count()
于 2012-08-31T15:45:43.897 回答
6

澄清一个集合是一组文件。因此,您在此问题中的术语略有偏差。

要访问嵌入的文档或对象,您只需像在传统 javascript 中一样使用点表示法。

db.coll.find({name: 'montalto', 'users.username': 'ciccio'})

您当然可以.count()在最后添加。

于 2012-08-31T16:35:51.037 回答