Tag: mongodb

Mongoose / MongoDB:从名称中获取_ids

给定一个string数组,并在MongoDB中使用该string和主键的集合,如果存在,如何获得这些string的_id,如果不存在,则插入logging? 该集合只有名称和它的_id。

使用Node.js迭代超过5000万个MongoDB集合logging的最快方法

我正在使用stream()迭代在Node.JS中有超过5500万条logging的集合。 它是一个简单的迭代,我检查每个logging的不同值,如果它们存在或不存在,然后计算有多lesslogging缺less这些值。 迭代复杂度为O(n)。 因此,57万GB大小的5500万条logging需要将近18个小时。 花费太多时间了吗? 我正在使用下面的查询迭代样本是55万logging的集合。 db.collection(`sample`).find({}).stream() .on('data', (data) => { if (data.value) { count++ } }) .on('error', (error) =>{ }) .on('end', () => { console.log('success') }) 迭代所有logging(不使用任何查询或过滤条件)的最佳方法是什么? 我想知道这样的迭代是否合适,如果没有,那么会出现什么问题呢?

用mongoose连接Mlab

嗨,我试图做一个简单的连接 mongoose.connect('mongodb://JFalcon:john2522@ds119476.mlab.com:19476/hidonshabat', {useMongoClient: true}, function(err){ if(err) { console.log('Some problem with the connection ' +err); } else { console.log('The Mongoose connection is ready'); } }) 正如你可以看到这是url! Plaese帮助我

如何安全地更新共享的MongoDB实例?

我想了解如何在应用程序启动过程中build立我认为需要成为Mongo数据库上的write-lock 。 我有一个设置,我们有几个(在这个图中只有2个)build立到Mongo副本集的连接的Node API。 在启动时,我希望能够对Mongo运行一些脚本,如果它是旧版本。 例如: MongoDB: v1 schema 节点应用程序: expecting v3 schema 因此,在启动期间,Node App将运行v2Upgrade.js和v3Upgrade.js或类似的。 但是,我想确保只有1节点应用程序可以在任何时候运行此。 所以2个问题: 我以正确的方式思考这个问题吗? 我怎样才能最好地创build某种锁,所以只有一个进程在数据库“准备就绪”之前运行这些更新?

docker – 撰写只运行我的MongoDB服务器,但没有运行我的JS文件

我是新来的使用docker。 我正在开发一个简单的表单,将用户input的数据提交到一个mongodb数据库,并将其redirect到一个html页面。 它在我的本地主机上工作完美,但是当我dockerize它,它不起作用。 事情是,我的代码在Mac上完美工作,但不在Windows操作系统上。 任何帮助将不胜感激。 这是我的js代码: var express = require('express'); var app = express(); var fs = require('fs'); var bodyParser = require('body-parser'); var urlencodedParser = bodyParser.urlencoded({ extended: false }); var MongoClient = require('mongodb').MongoClient; app.use(express.static(__dirname + '/../public')); app.get('/', (req,res)=> file = fs.createReadStream(__dirname + '/clientlogin.html').pipe(res)); app.get('/thanks', (req,res)=> file = fs.createReadStream(__dirname + '/formthanks.html').pipe(res)); app.post('/', urlencodedParser, function(req,res){ var firstname […]

是否有可能使用mongoose直接查询子文档?

假设有一个用户模型和一个Post模型。 在这种情况下,用户会有很多post; 用户将是父母,邮政将是孩子。 是否有可能直接查询post? 例如,如果我想要做类似的事情 app.get('/post/search/:query', (req,res) => { Posts.find({title: req.params.query }, (err,post) => { res.send(JSON.stringify(post)) }) }) 或者必须做: app.get('/post/search/:query',(req,res) => { let resultsFromQuery = []; User.find({'post.title':req.params.query'}, (err,user) => { user.posts.forEach((post) => { if(post.title === req.params.query){ resultsFromQuery.push(post); } }) }) res.send(JSON.stringify(resultsFromQuery)) }) 编辑:这是我的模式。 用户模式(父) const mongoose = require('mongoose'), Schema = mongoose.Schema, PostSchema = require('./post.js'); let […]

摩卡testing不返回mongod保存

我在使用nodejs,MongoDB和mochatesting用户validation方法时遇到了麻烦。 错误 ^CHarrys-MacBook-Pro:Phonex hcbh96$ npm run test-watch > ls@1.0.0 test-watch /Users/hcbh96/Desktop/PhonexDevelopment/Phonex > nodemon –exec 'npm test' [nodemon] 1.12.1 [nodemon] to restart at any time, enter `rs` [nodemon] watching: *.* [nodemon] starting `npm test` > ls@1.0.0 test /Users/hcbh96/Desktop/PhonexDevelopment/Phonex > mocha tests/**/*.test.js Node app is running at localhost: + 3000 Post /tempUser { phone: '5005550006', countryCode: '+1', […]

testingfindOneAndUpdate插入重复预防

您好我有一个节点js代码,使用findOneAndUpdate与Upsert = true创build一个新的MongoDB文档,如果不存在。 我想testing两个asynchronous线程同时调用我的代码,然后它会创build重复。 那甚至有可能testing? 我怎样才能做到这一点。 我是一个初学者在testing。

Mongoose:更新文档中的数组无法正常工作

我试图更新文件中的数组,如果它不存在,添加对象,否则replace数组中的对象。 但是除了$ set参数之外,没有任何东西($ push,$ addToSet)会执行任何操作,并且$ set按预期工作 – 覆盖整个数组。 我的mongoose模式: var cartSchema = mongoose.Schema({ mail: String, items: Array }); 发布请求处理程序: app.post('/addToCart', function(req, res) { var request = req.body; Cart.findOneAndUpdate({ "mail": request.mail }, { $addToSet: { "items": request.item } }, { upsert: true }, function(err, result) { console.log(result); } ); res.send(true); }); 我从客户端发送的数据: { "mail":"test@gmail.com", "item":{ "_id":"59da78db7e9e0433280578ec", […]

mongoose得到最高的价值的关键

这是我的模式 var schema = new mongoose.Schema({ key: String, value: Number }, { timestamps: true }); 我有这样的条目(我收集不同的统计) var entry1 = { key: "subscribers", value: 100 } var entry2 = { key: "online", value: 105 } 我试图得到每个关键所有时间的高价值。 现在我有这个: var now = new Date(); var startOfToday = new Date(now.getFullYear(), now.getMonth(), now.getDate()); db.getConnection().model("MaxValue").aggregate([{ "$match": { createdAt: { $gte: startOfToday […]