【问题标题】:Is there a way to use aggregation function to search for two fields for MongoDB/Java有没有办法使用聚合函数来搜索 MongoDB/Java 的两个字段
【发布时间】:2021-06-11 14:53:24
【问题描述】:

我想做的是让所有区域或次区域等于“南亚”的国家。是否有一个函数可以将区域和子区域与字符串“Southern Asia”进行比较?我尝试使用过滤器,但这对我来说没有用。下面的代码可以很好地找到等于“Souther Asia”的区域

Bson match = match(eq("region", "Southern Asia"));

这是一个json数据的例子:

{
  "_id": {
    "$oid": "60c25ff18d787ab8bb976a6b"
  },
  "name": "Afghanistan",
  "topLevelDomain": [
    ".af"
  ],
  "alpha2Code": "AF",
  "alpha3Code": "AFG",
  "callingCodes": [
    "93"
  ],
  "capital": "Kabul",
  "altSpellings": [
    "AF",
    "Afġānistān"
  ],
  "region": "Asia",
  "subregion": "Southern Asia",
  "population": {
    "$numberDouble": "27657145.0"
  },
  "latlng": [
    {
      "$numberDouble": "33.0"
    },
    {
      "$numberDouble": "65.0"
    }
  ],
  "demonym": "Afghan",
  "area": {
    "$numberDouble": "652230.0"
  },
  "gini": {
    "$numberDouble": "27.8"
  },
  "timezones": [
    "UTC+04:30"
  ],
  "borders": [
    "IRN",
    "PAK",
    "TKM",
    "UZB",
    "TJK",
    "CHN"
  ],
  "nativeName": "افغانستان",
  "numericCode": "004",
  "currencies": [
    {
      "code": "AFN",
      "name": "Afghan afghani",
      "symbol": "؋"
    }
  ],
  "languages": [
    {
      "iso639_1": "ps",
      "iso639_2": "pus",
      "name": "Pashto",
      "nativeName": "پښتو"
    },
    {
      "iso639_1": "uz",
      "iso639_2": "uzb",
      "name": "Uzbek",
      "nativeName": "Oʻzbek"
    },
    {
      "iso639_1": "tk",
      "iso639_2": "tuk",
      "name": "Turkmen",
      "nativeName": "Türkmen"
    }
  ],
  "translations": {
    "de": "Afghanistan",
    "es": "Afganistán",
    "fr": "Afghanistan",
    "ja": "アフガニスタン",
    "it": "Afghanistan",
    "br": "Afeganistão",
    "pt": "Afeganistão",
    "nl": "Afghanistan",
    "hr": "Afganistan",
    "fa": "افغانستان"
  },
  "flag": "https://restcountries.eu/data/afg.svg",
  "regionalBlocs": [
    {
      "acronym": "SAARC",
      "name": "South Asian Association for Regional Cooperation",
      "otherAcronyms": [],
      "otherNames": []
    }
  ],
  "cioc": "AFG"
}

【问题讨论】:

  • 尝试使用$or$in

标签: java mongodb aggregation-framework


【解决方案1】:

像这样使用or 过滤器:

Bson match = match(or(eq("region", "Southern Asia"), eq("subregion", "Southern Asia")));

【讨论】:

    猜你喜欢
    • 2020-12-08
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多