MongoDB 一个字段未知的复合键查询

MongoDB Composite Key query with one field unknown

我有一个数据库,每个条目都有两个字段(x 和 i)的唯一组合。所以我将 _id 字段设置为 {_id: {a: x, b: i}}。现在我想检索所有具有特定值 x 但对 i 具有任何值的值。

示例:

  {_id: {a: 1, b: 5}},
  {_id: {a: 1, b: 3}},
  {_id: {a: 2, b: 5}}
  {_id: {a: 3, b: 3}}

现在我想做这样的事情:db.find({_id: {a: 1, b: { $exists: true}}) 或更简单:db.find({_id: {a: 1}) 应该 return:

  {_id: {a: 1, b: 5}},
  {_id: {a: 1, b: 3}}

有什么办法可以做到这一点吗?或者换句话说,你能以任何方式查询这个复合主键吗?目前我将字段添加到对象本身,但这并不是真正的最佳解决方案,因为我的数据集变得非常大。

编辑:

db.someCollection.find({"_id.a": 1, "_id.b": { $exists: true}})

似乎是一个解决方案,但这与将 a 作为字段(不在键中)添加到对象一样慢。有没有更快的方法?

你试过吗?

db.someCollection.find({"_id.a": 1, "_id.b": { $exists: true}})