我有一个数据库,每个条目都有两个字段(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 作为字段(不在密钥中)添加到对象一样慢。有更快的方法吗?
答案 0 :(得分:1)
你试过这个吗?
db.someCollection.find({"_id.a": 1, "_id.b": { $exists: true}})