为了找到所需的产品阵列中元件的数量,使用的dot notation和$exists
的组合来寻找数组索引4(因为在JavaScript数组索引是从0开始)。如果该索引存在,那么就意味着你的文件有大小大于或等于5的阵列你最终的查询应该像
var query = { "name": "hotel", "products.4": { "$exists": true } };
db.foo.find(query);
另一种选择是使用$where
操作:
var query = { "name": "hotel", "products" : { "$exists": true }, "$where": "this.products.length > 4"})
db.foo.find(query);
两个
db.foo.insert([
{
name: "hotel",
products: [
{
id: 1,
name: "flower"
},
{
id: 350,
name: "chocolate"
}
]
},
{
name: "hotel",
products: [
{
id: 1,
name: "flower"
},
{
id: 350,
name: "chocolate"
},
{
id: 380,
name: "candy"
},
{
id: 390,
name: "milk"
},
{
id: 3,
name: "newspaper"
},
]
}
])
上述返回的查询文档:
与该样本数据测试查询
{
"_id" : ObjectId("551d6706180e849972938f8e"),
"name" : "hotel",
"products" : [
{
"id" : 1,
"name" : "flower"
},
{
"id" : 350,
"name" : "chocolate"
},
{
"id" : 380,
"name" : "candy"
},
{
"id" : 390,
"name" : "milk"
},
{
"id" : 3,
"name" : "newspaper"
}
]
}
是在文档中找到'$ size'运算符,但问题是,在它不需要像'$ gt'这样的其他运算符后 – 2015-04-02 15:38:51
更改查询以使用点运算符来检查数组是否存在长度 – chridam 2015-04-02 15:40:09
我试过了你的查询,但也没有成功:( – 2015-04-02 15:46:20