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