如何获得一个蒙古collections的孩子的关键?

我有一个像这样的收集用户:

{ _id: myid, name : 'blabla', ia : { [0]-> 'an id', [1]-> 'a second id' } } 

我想只有我的第一个ID的ia,所以我尝试了这样的事情:

 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} } 

…这意味着“其中_id等于idia等于对象{key:0} 。 这可能不是你想要的。

如果我不把这部分:“ia:{key:indexia}”我得到我所有的ia …但我只想要一个。

这听起来像你想要返回一个给定的文件。 这里的文档就在这里 。 在你的情况下,它会看起来像这样:

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

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

感谢您的帮助像这样的工人:

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

唯一('ia')不工作,但不是一个大问题。

您的collections似乎有架构:

 { "_id" : "id", "ia" : ["id1","id2","id3"], etc. } 

在这种情况下,查询“ia”字段的第一个“id”将是:

 find({}, { "ia" : {$slice:1 } }) 

你可以在这里阅读更多关于$ slice操作符 Mongoose在查询页面上logging对$ slice操作符的支持。 希望这可以帮助!