MongoDB Composite Key查询,其中一个字段未知

时间:2017-03-23 21:29:37

标签: mongodb mongoose composite-primary-key composite-key

我有一个数据库,每个条目都有两个字段(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})应该返回:

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

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

修改

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

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

1 个答案:

答案 0 :(得分:1)

你试过这个吗?

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