Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
Node.js 如何通过密钥获取mongo集合的子级?_Node.js_Mongodb_Key_Mongoose_Mongodb Query - Fatal编程技术网

Node.js 如何通过密钥获取mongo集合的子级?

Node.js 如何通过密钥获取mongo集合的子级?,node.js,mongodb,key,mongoose,mongodb-query,Node.js,Mongodb,Key,Mongoose,Mongodb Query,我有一个用户集合,看起来像这样: { _id: myid, name : 'blabla', ia : { [0]-> 'an id', [1]-> 'a second id' } } 我只想拥有ia的第一个id,所以我尝试了类似的方法: User.find({ _id: id, ia :{ key : indexia} }, ['ia']).populate('ia').run(rendu); 其中id=myid,indexia=0 如果

我有一个用户集合,看起来像这样:

{
_id: myid,
name : 'blabla',
ia : {
       [0]-> 'an id',
       [1]-> 'a second id'
      }
}
我只想拥有ia的第一个id,所以我尝试了类似的方法:

User.find({ _id: id, ia :{ key : indexia} }, ['ia']).populate('ia').run(rendu);
其中id=myid,indexia=0

如果我不写那个部分:“ia:{key:indexia}”,我会得到我所有的ia。。。但我只想要一个

希望我是清楚的。 谢谢

MongoDB
find()
命令用于匹配整个文档

当您运行以下查询时

{ _id: id, ia :{ key : indexia} }
。。。这意味着“其中
\u id
等于
id
ia
等于对象
{key:0}
”。这可能不是你想要的

如果我不写那个部分:“ia:{key:indexia}”,我会得到我所有的ia。。。但我只想要一个

听起来像是要返回给定文档的一部分。这方面的文档是。在您的情况下,它将如下所示:

find({ _id: id}, { 'ia.0' : 1 })

查找的第一部分将查找文档。第二部分将返回特定字段。

您的集合似乎具有以下架构:

{ "_id" : "id",
  "ia"  : ["id1","id2","id3"],
   etc.
}
在这种情况下,仅获取“ia”字段的第一个“id”的查询是:

find({}, { "ia" : {$slice:1  } })
您可以阅读有关$slice操作符的更多信息。 Mongoose记录了它对服务器上$slice操作符的支持。 希望这有帮助

谢谢你的帮助 它是这样的:

User.find({ _id: id }).only('ia').slice('ia', indexia, 1).populate('ia').run(rendu);

唯一的('ia')不起作用,但没什么大不了的。

我不确定我是否正确理解您的请求。你到底得到了什么,你想得到什么?你有实际/预期的JSON要发布吗?我的收藏:{“\u id”:{“$oid”:“4fac50bda7087c0c14000001”},“ia”:[“4fbec72f7f0257a815000004”,“4fbed51b53795ffc06000001”,“4fbee32403949f7c03000001”,“邮件”:a@a.fr,“名称”:“a”,“密码”:“5267768822EE624D48FCE15EC5CA79CBD602CB7F4C2157A516556991F22EF8C7B5EF7B18FF41C59370EFB0858651D44A936C11B7B144C48FE04DF3C6A3E8DA”}我得到的信息是:用户id(4FAC550BDA7087C0C14000001)和ia的关键引用:(第一、第二或第三)。我也想检索ia的id,例如:4fbed51b53795ffc06000001