在 spring mongo 模板中按数组大小检索所有数据
retrieve all data by size of array in spring mongo template
假设我有这些:
{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)
有人知道正确的吗?
'$size' operator doesn't accept the range parameters. You could use positional value existence to decide the size. as follows
db.collection.find({
"tags.0": {
$exists: true
}
})
在Spring中,您可以尝试如下操作,
mongoTemplate.find(Query.query(Criteria.where("tags.0").exists(true)));
您可以使用 $not 运算符:
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
}
}
})
假设我有这些:
{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)
有人知道正确的吗?
'$size' operator doesn't accept the range parameters. You could use positional value existence to decide the size. as follows
db.collection.find({
"tags.0": {
$exists: true
}
})
在Spring中,您可以尝试如下操作,
mongoTemplate.find(Query.query(Criteria.where("tags.0").exists(true)));
您可以使用 $not 运算符:
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
}
}
})