javascript - 如何过滤MongoDB集合文档的数组

标签 javascript mongodb express mongoose mongoose-schema

我是 MongoDB 新手,需要帮助。在我的数据库中,我试图创建一个集合,它只有一个文档。该文档有一个简单的键“城市”,它是一个包含 124247 个对象的数组。这是我的代码

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require("mongoose");
const cities = require('cities.json');
const Schema = mongoose.Schema;
const db = mongoose.connection;
const app = express();

mongoose.connect("mongodb://localhost:27017/cities");

db.once("open", function() {
  console.log("Connection ok.");
})

const cityScheme = new Schema({
  cities: Array
});

const WorldCities = mongoose.model("WorldCities", cityScheme);
const myCities = new WorldCities({
  cities: cities
}).save().then(data => console.log({}.toString.call(data.cities), 'dataaa'));

WorldCities.find({
  name: "Yerevan"
}, function(err, data) {
  console.log(data, 'Armenia');
});
cityScheme.statics.getSearchedcity = function(res) {
  this.find({}, (err, citysList) => res.json({
    citysList
  }));
}

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));

app.get('/api/city', (req, res) => {

})

app.listen(3000);

这是城市.json ` Cities.json 的链接.

所以在这里我想找到名为 Yerevan 的城市,但我不知道如何找到它。

最佳答案

您正在使用mongoose,从原始数据的外观来看,您似乎只在寻找一个文档...而且您的架构似乎已定义,以便您拥有城市 属性,其中包含 JSON 中的城市对象:

WorldCities.findOne({
  'cities.name': "Yerevan"
}, function(err, model) {
  // do something with the model here
  console.log(model);
});

findOne将只为您找到一份文档并在回调中返回它。

看看这是否能让你打破纪录。

关于javascript - 如何过滤MongoDB集合文档的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51896814/

相关文章:

javascript - 根据索引和重复索引将数组合并为新数组

javascript - react 将 Prop 从子级传递给父级未定义

javascript - 单击关闭其他 Accordion (不切换类)

node.js - Express/NodeJS + Mongoose App 服务器响应慢

node.js - 错误 : listen EACCES 0. 0.0.0:443

javascript - 数组练习javascript的同时循环

scala - 如何检索 Mongodb 集合中的所有对象,包括 id?

javascript - Mongoose 批量更新操作

node.js - 使用 Express Handlebars 注册组装 Handlebars 助手

javascript - Node-Express 一次可以发出多少个请求?