Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个字段未知的MongoDB复合密钥查询_Mongodb_Mongoose_Composite Primary Key_Composite Key - Fatal编程技术网

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

一个字段未知的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:

我有一个数据库,每个条目都有两个字段(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: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我认为这是查询复合键的唯一方法。如果我找到了,我将在此处更新。