在spring mongo模板中,根据数组大小检索所有数据。

问题描述 投票:0回答:1

假设我有这些。

{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)

有谁知道正确的方法?

arrays spring mongodb size gt
1个回答
0
投票

'$size' 操作符不接受范围参数。你可以使用位置值存在来决定大小。如下

db.collection.find({
  "tags.0": {
    $exists: true
  }
})

在春天,你可以尝试以下方式。

mongoTemplate.find(Query.query(Criteria.where("tags.0").exists(true)));

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
    }
  }
})
© www.soinside.com 2019 - 2024. All rights reserved.