sql >> データベース >  >> NoSQL >> MongoDB

MongoDBNodeJSリターンサブドキュメント

    あなたがやろうとしていることは、あなたのアプリではかなり些細なことです(つまり、findOneの後のJSコード )が、本当にmongodbでそれを実行したい場合は、集約を使用する必要があります。コードを次のように変更します:

    const username = req.body.User.Username;
    const user = await Account.aggregate([
        {
            $match: {
                "Users.Username": username
            }
        },
        {
            "$project": {
                _id: false,
                USER: {
                    $filter: {
                        input: "$Users",
                        as: "users",
                        cond: {
                            $eq: [
                                "$$users.Username",
                                username
                            ]
                        }
                    }
                }
            }
        },
        {
            "$unwind": "$USER"
        },
        {
            "$project": {
                USER_PIN: "$USER.PIN"
            }
        }
    ]);
    
    if(user.length){
        console.log(user[0].USER_PIN)
    }else{
        console.log('Username not found')
    }
    

    試してみる実際の集計クエリは次のとおりです。 https://mongoplayground.net/p/ o-xTTa8R42w




    1. 親キーが不明な場合にMongoDBを値でクエリする

    2. カスタム時間でMongoObjectId(_id)を生成しますか?

    3. MongoDBが150MBのメモリを使用するのが理想的ですか?

    4. MongoDB$minアグリゲーションパイプラインオペレーター