Mongoose:如何基于嵌套对象值查找()

wbrvyc0a  于 2022-11-13  发布在  Go
关注(0)|答案(2)|浏览(134)

我有一个这样的模式设计:

const UserDataFrameWork = new mongoose.Schema({
HighScores: {
        Dodge: {
            TenCent: {type:Number, default: 0},
            FiftyCent: {type:Number, default: 0},
            Dolsu: {type:Number, default: 0},
            FiveDolsu: {type:Number, default: 0},
            TenDolsu: {type:Number, default: 0},
            FiftyDolsu: {type:Number, default: 0},
        },
        example: { 
            test: {type:Number, default: 0}
          }
       }
}

const User = mongoose.model('User', UserDataFrameWork)

module.exports = User

我正在尝试查找在Dodge.Tencent中高分为0的用户,如下所示:

const express = require('express')
const router = express.Router();
const DB = require('../models/User')

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

const Tgames = await DB.find({"HighScores.Dodge.TenCent": 0})

console.log(Tgames)
res.render('testejs.ejs')

})

module.exports = router;

这不起作用,我不知道如何根据嵌套对象的值来查找。在mongoose模式中,对象内部是否有可能有对象?我对mongoose很陌生,如果我做错了什么,很抱歉?任何帮助都是感激的!

oyjwcjzk

oyjwcjzk1#

我的一个嵌套查询如下所示:

let ppdata = await Pallet.find({sscc: {$in: ssccArray}, 'po.edi_file_name': /PO/i }, ' sscc po.season po.edi_file_name').slice('po', -1).lean().exec();

您是否测试过:

const Tgames = await DB.find({"HighScores.Dodge.TenCent": 0}).exec()
cczfrluj

cczfrluj2#

我找到了答案!不是我的问题,但是,我不再坚持这个问题了。所以当我试图找到值为0的东西时,它没有返回任何东西,但是当我试图找到值为2的东西时,它返回了。如果我找不到值为0的东西,这不是问题,因为我相信它和undefined是一样的,因为我已经将默认值设置为0。

相关问题