如何从 mongodb 查询和获取数组中的一项?

Posted

技术标签:

【中文标题】如何从 mongodb 查询和获取数组中的一项?【英文标题】:How to query and fetch one item that is in an array from mongodb? 【发布时间】:2021-06-30 05:11:39 【问题描述】:

我是 MongoDB/Mongoose 的新手,我正在使用 MongoDB、Node 和 Express

这是数据库结构


       "_id" : ObjectId("5e19d76fa45abb5d4d50c1d3"),
       "name" : "Leonel Messi",
       "country" : "Argentina",
       "awards" : [ "Ballon d'Or", "Golden Boot", "FIFA World Player of the Year",]

这是在node js环境中使用mongoose和express的查询

router.get('/FindPlayers', async (req, res) => 

const player = await Players.findOne( name: "Leonel Messi" ,  country: 1, awards: [0], _id: 0, );

  res.send(player);
);

我想得到县和奖项数组中的第一项,如下所示


  country : "Argentina",
  awards : [ "Ballon d'Or" ]

但是我得到了


  country : "Argentina",
  awards : [ 0 ]

【问题讨论】:

【参考方案1】:

试试这个:

const player = await Players.findOne(
    
        name: "Leonel Messi"
    ,
    
        country: 1,
        awards:  $arrayElemAt: ["$awards", 0] ,
        _id: 0
    
);

// or

const player = await Players.findOne(
    
        name: "Leonel Messi"
    ,
    
        country: 1,
        awards:  $first: "$awards" ,
        _id: 0
    
);

【讨论】:

以上是关于如何从 mongodb 查询和获取数组中的一项?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 LINQ 的 AsQueryable() 从 MongoDB 的内部数组中获取数据?

交错两个 numpy 索引数组,每个数组中的一项

MongoDB - 仅获取已填充文档的数组中的第一项 - 例如user.populate('posts', 'images.0')

MongoDB 数组字段的查询和更新

检索子文档中数组的第一项而不获取其他子文档

如何使用 findOne 查询 mongodb 并排除数组中的一些嵌套字段