首页 > 解决方案 > 如何获取数组中具有特定值的所有文档?

问题描述

所以基本上我需要在该文档的某个数组中获取所有具有特定值的文档。我被引导相信 $in 是这种方法的正确运算符,但到目前为止,mongo 拒绝从我的代码中返回任何值。我尝试了许多不同的方法都无济于事。这是我目前正在为其运行的功能。

exports = async function(payload, response) {
    response.setHeader("Content-Type","application/json");
    
    const query = payload.query 
    const mongodb = await context.services.get("mongodb-atlas");
    const Lobbies = await mongodb.db("Sword_Universe").collection("Lobbies");
    const playerLobbies = JSON.stringify(Lobbies.find( { "players" : { $in: ["serverOptimist"] } } ))
    console.log(playerLobbies);
    response.setBody(playerLobbies);
};

标签: node.jsmongodb

解决方案


如果玩家列表是带有名称字段的玩家对象列表,则查询应该是

players:{$elemMatch:{name:"serverOptimist"}}

编辑:因为它只是通过单个字段搜索,所以可以缩短

"players.name":"serverOptimist"

如果它是玩家姓名的字符串数组,那么这应该可以工作:

"players":"serverOptimist"


推荐阅读