我是 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/