如何从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;
这是我的数据库结构:
我想从数组中获取 owerid
和 amt
值。我不知道如何获取这个值。有人告诉我。
【问题讨论】:
您是要根据owerid
获取数组的某个特定项,还是要获取整个数组?
我想从数组中取出所有的owerid
和amt
如果你使用像ower.oweid
和ower.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 数组中得到amt
和 owerid
嗯,owers
是一个对象数组。因此,您只能访问某些特定对象及其amt
和owerid
。这就是你想要的吗?
是的,这就是我想要的以上是关于如何从mongodb中的嵌套数组中获取值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 findOne 查询 mongodb 并排除数组中的一些嵌套字段