【问题标题】:How to fetch values from nested array in mongodb如何从mongodb中的嵌套数组中获取值
【发布时间】:2022-01-20 22:44:02
【问题描述】:

我正在使用 mongodb 数据库来存储数据并使用 mongoose 来制作架构。下面是我的架构:

expense.js

const mongoose = require('mongoose');

const ExpenseSchema = new mongoose.Schema({

  payerid:{
      type: String,
      required: true
  },
  paid:{
    type: Number,
    require: true
  },
  owers:[
      {
     owerid:{
       type:String
     },
     amt:{
       type: Number
     }  
    }
  ],
  name:{
    type: String,
    required: true
  },
  amount:{
      type: Number,
      require: true
  }
});

const expense = mongoose.model('expense',ExpenseSchema);
module.exports = expense;

这是我的数据库结构:

我想从数组中获取 oweridamt 值。我不知道如何获取这个值。有人告诉我。

【问题讨论】:

  • 您是要根据owerid 获取数组的某个特定项,还是要获取整个数组?
  • 我想从数组中取出所有的oweridamt
  • 如果你使用像ower.oweidower.amt这样的路径,你会得到2个包含所有这些值的数组。

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

你可以这样做:

const Expenses= require('../models/expense');

const getExpense = async (expenseId) => {
  try {
    const expense = await Expenses.findById(expenseId);  
    // Now, you can access owers array of the document
    console.log(expense.owers);
    return expense.owers;
  } catch (error) {
    console.log('ERROR: ', error);
  }
}

【讨论】:

  • 我可以得到 ows 数组,但是我怎样才能从那个 ows 数组中得到 amtowerid
  • 嗯,owers 是一个对象数组。因此,您只能访问某些特定对象及其amtowerid。这就是你想要的吗?
  • 是的,这就是我想要的
猜你喜欢
  • 2023-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多