如何从mongodb中的嵌套数组中获取值

Posted

技术标签:

【中文标题】如何从mongodb中的嵌套数组中获取值【英文标题】:How to fetch values from nested array in 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个包含所有这些值的数组。 【参考方案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。这就是你想要的吗? 是的,这就是我想要的

以上是关于如何从mongodb中的嵌套数组中获取值的主要内容,如果未能解决你的问题,请参考以下文章

从 Mongo DB 文档的数组中的对象数组中删除一个值

MongoDB在对象数组中获取嵌套在对象数组中的单个对象

如何从 MongoDB 文档中的双重嵌套数组中删除元素。

如何使用 findOne 查询 mongodb 并排除数组中的一些嵌套字段

如何从 Mongo DB 中的子文档数组中删除匹配条件的子文档

MongoDB:如何查询嵌套数组?