如何使用猫鼬操作从 mongo db 返回的数据

How to manipulate data returned from mongo db using mongoose

本文关键字:db 返回 数据 mongo 何使用 操作      更新时间:2023-09-26

我使用 mongo 创建了一个本地数据库(实际上使用本教程)

它有一个名为"simple"的数据库和名为"people"的集合。然后我导入每个元素的 json 作为

{
    "id": 1,
    "guid": "1581cfde-f2fc-44f8-8953-511331e943ab",
    "isActive": true,
    "firstName": "Ilene",
    "lastName": "Kent",
    "email": "carolegoodman@intrawear.com"
  }

然后,我在节点应用中创建架构和人员模型

var express = require('express');
var path = require('path');
var mongoose = require('mongoose');
var app = express();
app.set('port', (process.env.PORT || 5000));
mongoose.connect('mongodb://localhost/simple')
var personSchema = {
  firstname: String,
  lastname: String,
  email: String
}
var Person = mongoose.model('Person', personSchema, 'people')
app.get('/users', function(req,res){
  Person.find(function(err, doc){
    var x = doc[0]
    console.log(x)
    console.log(Object.keys(x))
    res.send(200);
  });
});

在人员模型上调用 find() 时,我被记录(对于控制台.log(doc[0])) - 文档中返回的第一项:

{ _id: 548e41afa0bad91d53f34cce,
  id: 0,
  guid: 'af6a931d-1801-4662-9d52-c95dc97bac22',
  isActive: false,
  firstName: 'Janna',
  lastName: 'Shelton',
  email: 'crossoconnor@geekology.com' }

但我的问题是,当我在 doc[0](即.doc[0].firstName)上查找属性 firstName 时,我得到了一个未定义的。

我尝试诊断这个,Object.keys(doc[0])给了我:

[ '$__',
  'isNew',
  'errors',
  '_maxListeners',
  '_doc',
  '_pres',
  '_posts',
  'save',
  '_events' ]

这意味着当您想从返回的元素访问数据时,我怀疑猫鼬必须有一些特殊的方法 - 但我在文档或这里找不到答案。

谢谢

您会收到一组文档。猫鼬原料药

doc[0].get('firstName')

当您只需要可以自由操作的文档的纯JavaScript表示形式时,请将lean()添加到Mongoose查询链中:

app.get('/users', function(req,res){
  Person.find().lean().exec(function(err, docs){
    var x = docs[0]
    console.log(x)
    console.log(Object.keys(x))
    res.send(200);
  });
});

在查询中使用 .lean(),如下所示。

db.collection.find().lean().then(function(data){})