一个字段未知的MongoDB复合密钥查询
我有一个数据库,每个条目都有两个字段(x和I)的唯一组合。因此,我将_id字段设置为{u id:{a:x,b:I}。现在我想检索所有具有特定值x但具有任何I值的值 例如:一个字段未知的MongoDB复合密钥查询,mongodb,mongoose,composite-primary-key,composite-key,Mongodb,Mongoose,Composite Primary Key,Composite Key,我有一个数据库,每个条目都有两个字段(x和I)的唯一组合。因此,我将_id字段设置为{u 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({u-id:{a:1,b:{$exists:true}}})或者更简单的:db.find({u-id:{a:
{_id: {a: 1, b: 5}},
{_id: {a: 1, b: 3}},
{_id: {a: 2, b: 5}}
{_id: {a: 3, b: 3}}
现在我想做一些类似于:db.find({u-id:{a:1,b:{$exists:true}}})
或者更简单的:db.find({u-id:{a:1})
应该返回:
{_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}})
这似乎与不将值设置为主键而将其设置为数据库字段一样慢。有没有更快的查询方法?@jordenvanbreeemen我认为这是查询复合键的唯一方法。如果我找到了,我将在此处更新。