Skip to content

Queries on secondary indexes

Pavel Paulau edited this page Jul 1, 2014 · 1 revision

Documents (deterministic randomization)

Example:

{
  "achievements": [7, 87, 219, 231, 83],
  "body": "f42ddda8fec8531f45cee8ae858033ca023c6...",
  "gmtime": [1973, 4, 3, 0, 0, 0, 1, 93, 0],
  "county": {
    "f": {
      "f": "e10d8c"
    }
  },
  "street": {
    "f": {
      "f": "1c2c6b46"
    }
  },
  "year": 1995,
  "category": 1,
  "city": {
    "f": {
      "f": "858033"
    }
  },
  "realm": {
    "f": "ca023c"
  },
  "name": {
    "f": {
      "f": {
	"f": "f42ddd a8fec8"
      }
    }
  },
  "country": {
    "f": "e78404"
  },
  "coins": {
    "f": 256.07
  },
  "state": {
    "f": "OH"
  },
  "full_state": {
    "f": "Connecticut"
  },
  "email": {
    "f": {
      "f": "531f45@cee8ae.com"
    }
  }
}

See specification for details.

Indexes

Equality

name_and_street_by_city

N1QL:

CREATE INDEX by_city ON {}(city.f.f)

MongoDB:

db.{}.ensureIndex( { "city.f.f": 1 } )

name_and_email_by_county

N1QL:

CREATE INDEX by_county ON {}(county.f.f)

MongoDB:

db.{}.ensureIndex( { "county.f.f": 1 } )

achievements_by_realm

N1QL:

CREATE INDEX by_realm ON {}(realm.f)

MongoDB:

db.{}.ensureIndex( { "realm.f": 1 } )

Range

name_by_coins

N1QL:

CREATE INDEX by_coins ON {}(coins.f)

MongoDB:

db.{}.ensureIndex( { "coins.f": 1 } )

email_by_achievement_and_category

N1QL:

CREATE INDEX by_achievement ON {}(achievements)

CREATE INDEX by_category ON {}(category)

MongoDB:

db.{}.ensureIndex( { "achievements": 1 } )

db.{}.ensureIndex( { "category": 1 } )

street_by_year_and_coins

N1QL:

CREATE INDEX by_coins ON {}(coins.f)

CREATE INDEX by_year ON {}(year)

MongoDB:

db.{}.ensureIndex( { "coins.f": 1 } )

db.{}.ensureIndex( { "year": 1 } )

Aggregation

coins_stats_by_state_and_year

N1QL:

CREATE INDEX by_state ON {}(state.f)

CREATE INDEX by_year ON {}(year)

MongoDB:

db.{}.ensureIndex( { "state.f": 1 } )

db.{}.ensureIndex( { "year": 1 } )

coins_stats_by_gmtime_and_year

N1QL:

CREATE INDEX by_gmtime ON {}(gmtime)

CREATE INDEX by_year ON {}(year)

MongoDB:

db.{}.ensureIndex( { "gmtime": 1 } )

db.{}.ensureIndex( { "year": 1 } )

coins_stats_by_full_state_and_year

N1QL:

CREATE INDEX by_full_state ON {}(full_state.f)

CREATE INDEX by_year ON {}(year)

MongoDB:

db.{}.ensureIndex( { "full_state.f": 1 } )

db.{}.ensureIndex( { "year": 1 } )

Multiple emits

name_and_email_and_street_and_achievements_and_coins_by_city

N1QL:

CREATE INDEX by_city ON {}(city.f.f)

MongoDB:

db.{}.ensureIndex( { "city.f.f": 1 } )

street_and_name_and_email_and_achievement_and_coins_by_county

N1QL:

CREATE INDEX by_county ON {}(county.f.f)

MongoDB:

db.{}.ensureIndex( { "county.f.f": 1 } )

category_name_and_email_and_street_and_gmtime_and_year_by_country

N1QL:

CREATE INDEX by_country ON {}(country.f)

MongoDB:

db.{}.ensureIndex( { "country.f": 1 } )

Emitting large fields

body_by_city

N1QL:

CREATE INDEX by_city ON {}(city.f.f)

MongoDB:

db.{}.ensureIndex( { "city.f.f": 1 } )

body_by_realm

N1QL:

CREATE INDEX by_realm ON {}(realm.f)

MongoDB:

db.{}.ensureIndex( { "realm.f": 1 } )

body_by_country

N1QL:

CREATE INDEX by_country ON {}(country.f)

MongoDB:

db.{}.ensureIndex( { "country.f": 1 } )

Distinct

distinct_states

N1QL:

CREATE INDEX by_state ON {}(state.f)

MongoDB:

db.{}.ensureIndex( { "state.f": 1 } )

distinct_full_states

N1QL:

CREATE INDEX by_full_state ON {}(full_state.f)

MongoDB:

db.{}.ensureIndex( { "full_state.f": 1 } )

distinct_years

N1QL:

CREATE INDEX by_year ON {}(year)

MongoDB:

db.{}.ensureIndex( { "year": 1 } )