假设我有这些。
{id: 1, name: name1, tags: [{id: 1, name: tag1}]},
{id: 2, name: name2, tags: []},
{id: 3, name: name3, tags: [{id: 3, name: tag3}, {id:33, name: tag33}]},
{id: 4, name: name4}
然后执行一个查询,我想这样:
{id: 1, name: name1, tags: [{id: 1, name: tag1}]},
{id: 3, name: name3, tags: [{id: 3, name: tag3}, {id:33, name: tag33}]}
获取有 "tags "数组的文档,并且它的大小大于0,但不知道如何创建我的标准。
我试了一下,但抛出一个错误,说size()必须接受一个int的参数......。
where(tags).size().gt(0)
有谁知道正确的方法?
您可以使用 不 运营商。
where("tags").not().size(0).andOperator(where("tags").exists(true));
db.collection.find({
"tags": {
"$not": {
"$size": 0
}
},
"$and": [
{
"tags": {
"$exists": true
}
}
]
})
替代品。 你不能用 Spring-data-mongo
框架。
db.collection.find({
tags: {
$exists: true,
$not: {
$size: 0
}
}
})