如何从 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 的内部数组中获取数据?
MongoDB - 仅获取已填充文档的数组中的第一项 - 例如user.populate('posts', 'images.0')