繁体   English   中英

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

[英]How to filter MongoDB collection document's array

我是MongoDB的新手,需要帮助。 在我的数据库中,我试图创建一个仅包含一个文档的集合。该文档具有一个简单的关键字`city,该数组包含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);

这是cities.json`链接Cities.json

因此,我想在这里找到名称为埃里温的城市,但我不知道如何找到它。

您正在使用mongoose和原始数据的外观看起来你正在寻找只有一个文档......也似乎你的架构定义,让你拥有cities它包含了城市从您的JSON对象等等属性:

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

findOne只会为您找到一个文档,并在回调中返回它。

看看是否能为您取得记录。

使用.filter

例如:

arrayOfCiteis.filter(myC => myC.name === "Yerevan")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM