Articles of mongodb

为数组的每个元素发出查询

我目前正在查询我的mondo数据库在一个集合中返回一个数组的URL的数组。 然后,我想使用该数组来通过另一个集合,并find前一个查询的返回数组中的每个元素的匹配元素。 在数组上使用forEach并进行个别查询是否正确? 我的代码看起来像这样,第一个函数getUrls很好。 目前我得到的错误是: (节点:10754)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):TypeError:无法读取未定义的属性“限制”(节点:10754)[DEP0018]弃用警告:弃用未处理的承诺拒绝。 将来,未处理的承诺拒绝将使用非零退出代码来终止Node.js进程。 async function useUrls () { let domains = await getUrls() let db = await mongo.connect("mongodb://35.185.206.31:80/lc_data") let results = [] domains.forEach( domain =>{ let query = {"$match": {"email_domain": domain} } let cursor = db.collection('circleback') .aggregate([query], (err, data) =>{ if(err) throw err; console.log("cb", data) }).limit(1100) })

匹配不与Mongoose中的聚合

没有匹配,我得到我需要的输出,当我提供$匹配值,我得到一个空的答复。 什么可能是空回应的原因? 有没有什么不同的方式来调用$匹配参数? var query = {"section":"324444"}; // 324444 is section schema _id value Transaction.aggregate({ "$match": query },{ "$group": { "_id": "$user", "section": { "$first": "$section"}, "amount": { "$sum": { "$cond": ["$credit", "$amount", { "$subtract": [ 0, "$amount" ] }] }} }}) .exec(function(err, transactions) { // Transactions List Grouped User wise }); // Transaction schema […]

我应该caching数据在我的服务器还是只依靠MongoDB

我有一个在Heroku上运行的网站,我使用Mongo Atlas作为我的数据库。 我已经testing了mongo连接速度,根据数据我发现它的大约5ms到20ms注意:Heroku应用程序和Mongo Atlas都在相同的aws区域。 现在我的问题是我有我的用户频繁查询约10Klogging的集合。 对于这个用例,我应该caching这些10Klogging在服务器或者我应该把它留给MongoDB和生活在~15ms的开销? 你怎么看?

mongoose – 铸造ObjectId失败

我正在一个小型的博客应用程序,我在这里被困在这个错误 – { "message": "Cast to ObjectId failed for value \" 597c4ce202ca9c353fc80e8a\" at path \"_id\" for model \"Blog\"", "name": "CastError", "stringValue": "\" 597c4ce202ca9c353fc80e8a\"", "kind": "ObjectId", "value": " 597c4ce202ca9c353fc80e8a", "path": "_id" } 我正在使用findById – 这是代码 app.get("/blogs/:id", function(req, res) { Blog.findById(req.params.id, function(err, foundBlog) { if (err) { res.send(err); } else { res.render("show", { blog: foundBlog }); } […]

如何构build和部署meteor应用从开发机器到离线生产机器?

我正在尝试meteor。 我开发了一个使用mongodb的基本webapp。 现在,这个应用程序需要部署在目标机器上(win32),具有以下要求。 目标机器只是一台PC,使用它的人不是一个开发人员。 所以,如果我可以将它们指向单个安装程序(对于运行时…我想一些nodejs + mongodb捆绑包?)会很好。 build立和部署应用程序到他们的个人电脑的文件夹。 “meteorbuild立”产生一个很好的压缩,但它似乎并不像一个生产版本,即包含大量的可读的JavaScript文件夹。 难道仅仅为server-app构build一个简化的js,为client-app构build一个缩小的js + html + css组合是不可能的? 目标机器将大部分不在互联网上,偶尔会上网(每天一次)。 我想这应该是好的,因为应用程序的用户将只是局域网内的其他机器。

如何实现Rest API,它支持使用nodejs和mongodb进行部分响应和嵌套查询

我一直想知道如何实现一个如Facebookgraphics,谷歌和LinkedIn部分响应如这里所述的api系统 Facebook的 GET /clients/007?fields=firstname,name 200 OK { "id":"007", "firstname":"James", "name":"Bond" } 谷歌 GET /clients/007?fields=firstname,name,address(street) <— nested query 200 OK { "id":"007", "firstname":"James", "name":"Bond", "address":{"street":"Horsen Ferry Road"} } 我看了一下facebook GraphQL库似乎提供了部分响应的解决scheme,但它似乎更复杂,难以实现 有没有任何nodejs库可以提供这样的界面权限pipe理来控制哪些用户可以访问哪些数据

生成一个独特的链接,以跟踪Node.js中的用户

我正在开发一个MEAN栈 web应用程序,用于pipe理培训中的注册过程(在高中和大学组织培训)。 应用程序中有两个部分,一个用于pipe理员,另一个用于愿意注册培训的人员。 注册过程很简单: 1-用户填写表格并提交,然后生成电子邮件(付款通知)。 2-用户支付该培训。 3-通过电子邮件发送付款凭证(银行收据)。 4-pipe理员确认付款后确认该用户。 我想要的是,一旦用户填写了registry单, 就会生成一个唯一的链接,在这里他可以点击并上传付款收据而不用通过电子邮件发送。 这将使pipe理员和用户都很容易。 如果你们有任何关于如何在Node.js和MongoDB中这样做的想法,请让我知道。 PS:我不需要为用户制作authentication系统,只有pipe理员可以authentication。

什么是包含'ref'但不指定types的Mongoose模型属性?

对于mongoose来说很新奇 – 我正在做一个现有的项目,并且已经被赋予了改变一些模型属性的任务。 我明白,如果一个模型包含这种属性 postedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } 该属性引用另一个模型/模式,并访问该链接的模型/模式需要populate它来访问该属性。 但是在我正在审查的代码中(我没有写),这个types有很多属性 contentTypes: [{ ref: 'ContentType' }], source: { ref: 'Source',required: true }, 在哪里引用另一个模式,但没有types。 这是同一种关系,并暗示了id ? 这是一个子文件吗? 作为一个额外的问题:如果在一个模型中,我想引用一个链接模型(或模式)的属性,我需要先populate ? 也就是说,如果它是一个子文档,我可以使用点符号,但如果它是一个“链接”的文档,我不知道。

Mongoose,在更新中validation数组中的$ pull项

鉴于以下模式: var BookSchema = new Schema({ name: { type: String, required: true, unique: true }, description: { type: String, required: false }, authors: [AuthorSchema] }); var AuthorSchema = new Schema({ name: { type: String, required: true } type: { type: String, enum: ['FOO', 'BAR'], required: false } }, { _id: false }); 我想validation作者数组至less包含一个types=='FOO'的对象。 这意味着这应该失败: var […]

Express + MongoDB – req.query的对象

我尝试从MongoDB过滤我的结果。 我正在使用Express。 这是我的console.logs: req.query.filters from URL: http:// localhost:3000 / test?filters =%7Bpersonalbest%3A%7B%27%24gt%27%3A%27170%27%7D%2Cname%3A%7B%27%24gt %27%3A%27M%27%7D%7D 一个由我做的对象来testing它是否适用于我的数据库 {personalbest:{ '$ GT': '170'},名称:{ '$ GT': 'M'}} {personalbest:{'$ gt':'170'},名称:{'$ gt':'M'}} 码: var filters = req.query.filters db.collection('skijumper').find(filters).toArray() 当然,我得到这个错误: MongoError:查询select器必须是一个对象 将这个req.query转换成一个对象的最好方法是什么? 谢谢