Tag: mongodb

在mongodb中使用现有的字段作为objectId来创build带有节点的REST API并expression?

我的JSON文件是: [ {'name': name, 'birthday': birthday, 'telephone': telephone, 'details': details}, …. ] 我的应用程序将能够接受name , birthday和telephone价值,并且这三个值组合对于每个实体将是独特的。 我希望根据这三个值检索一个实体,例如http:// localhost:8000 / name?= mary&birthday?= 19880902&telephone?= 2234324567将返回Mary的json对象。 我正在查看使用mongodb和nodejs的示例,其中大多数build议使用new BSON.ObjectID(id)创build一个全新的_id字段,并执行类似于app.get('/users/:id', users.findById)来查找id。 是否有可能不创build一个单独的ID字段?

'如何高效地通过node.js mongodb驱动程序stream大型json文档?

我正在写一个node.js应用程序,通过mongo node.js驱动程序查询到mongodb数据库。 我想要路由到一个大json文档呈现的链接,但是,我想为了性能方面的考虑而stream式传输文档。 代码如下: var express = require("express"), app = express(), MongoClient = require("mongodb").MongoClient; MongoClient.connect("mongodb://localhost:27017/database", function(err,db) { var query = db.collection("manzanas").find({ "_id": "query" }) .project({ "_id":0 }); app.get("/link", function(req,res) { query.stream().on("data", function(d) { res.json(d); }); query.stream().on("end", function() { console.log("done"); res.end(); }); }); }); app.listen(8080, function() { console.log("server is on!"); }); 问题是,我第一次尝试访问链接一切都按预期工作,但是当我尝试刷新页面或从另一个选项卡或浏览器访问路由的JSON文档不呈现,而页面试图刷新时虽然互联网连接非常慢, 并最终没有显示。 我不知道如何解决这个问题,如果我不stream式处理文档,只是显示它,但是我没有遇到任何问题,但是我想知道如何使它与stream一起工作。 为了使其再次运行,我必须完全退出node.js进程,但这不是生产模式场景的选项。 我怎样才能做到这一点,什么是最好的方法? […]

MongoDB – Mongoose – 只能调用一次控制器保存方法。 然后它再也不会保存了

请看下面的编辑请 我正在做的是通过发布请求调用控制器保存function。 当我第一次运行该方法似乎保存了我所做的2个对象。 然后它将我redirect到好的路线。 但是当我回去发布相同的POST请求。 它给了我console.log的,但从来没有实际保存它们。 路由器: app.post('/new', function(req, res, next){ poll.newPoll(req, res, next); next(); }, function(req, res){ res.redirect('/ok'); }) 架构: var mongoose = require('mongoose'); var Schema = mongoose.Schema; //Schema for the polls var pollSchema = new Schema({ title: String, hash: String }); var Poll = mongoose.model('Poll', pollSchema); module.exports = Poll; 和控制器: var Poll = […]

创build一个新的文档,使用聚合来汇总具有特定值的字段

我有一个聚合pipe道下面。 我想做一个看起来像这样的文档{upvotes : 20, downvotes : 30} 。 我想要一个方法来检查vote字段,如果值是up将其添加到upvotes字段和相同的down但downvotes字段。 我如何制作该文件? { _id: 57aea6791016c0b023a71e9d, review: { _id: 57aeb0ee1015118c2b19c8b9, updatedAt: Fri Aug 12 2016 22:33:17 GMT-0700 (Pacific Daylight Time), createdAt: Fri Aug 12 2016 22:32:30 GMT-0700 (Pacific Daylight Time), vote: 'up', reviewText: 'test pleas', company: 57aea6791016c0b023a71e9d, companyName: 'comp1', userType: 'anon', user: 57aeb0dd1015118c2b19c8b8, statements: [Object], __v: 0, className: […]

检索最新的条目,然后用MongoDB和Mongoose马上删除它?

原谅我的无知,但我更多的C#开发人员。 这是我的第一个NodeJS程序。 我试图编写一个程序,我的程序调用一个GET到我的node.js服务器。 当服务器收到这个请求时,我希望它从MongoDB发送最新的条目,并立即删除它,所以它不能被重用。 我希望这是做服务器端。 下面是我的下面, router.get('/', function(req, res, next) { Todo.findOne({}, {}, { sort: { '_id' : -1 } }, function(err, post) { res.json(post); Todo.remove({_id: -1}); }); });

使用$ group时是否可以列出不存在的组?

如果我想从节点服务器(使用mongoosoe)对mongodb集合执行$ group和$ sum,是否可以为非现有组返回0? 该集合具有以下字段:ssn,名称,性别,城市。 model.aggregate([ { $group : { _id : { city:"$city", gender:"$gender"}, count{ $sum:1 }} }], function (err,result) { if(err) { //err } else{ //response } }); 如果城市中有两个性别的人 – 查询将返回: { "_id" : { "city" : "NY", "gender" : "male" }, "count" : 11 }, { "_id" : { "city" : "NY", "gender" […]

如何从mongoose模式中的数组中select一个值

使用MongoDb版本3.2.7 我有一个这样的mongoose模式,它有一个分支模式中的股票数组。 我想select股票数组中的一个subCategoryId ,并获得该subCategoryId currentPrice只,因为我正在查询 var getCriteria = { "stock.subCategoryId": subCategoryId } var update = { "stock.$.currentPrice": currentPrice } 此查询适用于更新值的时间,因为我可以完美地更新所选子subCategoryId的currentPrice 。 但是,当我想要得到一个特定的subCategoryId的价格下面的查询得到我在分支集合中的所有股票。 我正在使用的查询是这样的: var getCriteria ={ "stock.subCategoryId": subCategoryId } mongoose纲要 var branch = new Schema({ branchName: { type: String, trim: true, index: true, default: null }, isBlocked: { type: Boolean, default: false, required: true }, […]

如何通过在$ project中提供的_id与$ mongodb聚合进行$匹配?

我想要能够匹配/过滤来自whiskey.style的特定风格。 我想知道是否由于OID的格式不匹配。 我试图toString()作为文件似乎build议 – 可能需要调查这更多.. 这是我的查询/ $匹配对象 var qObj.whiskeyFilter = { whiskey: { style: '57953144abfaa62383341a72' }, _id: { '$in': [ 57a115304d124a4d1ad12d81, 57a114d64d124a4d1ad12d7f, 57a1152a4d124a4d1ad12d80, 57a9049906f3733623826538 ] } } 我的pipe道: var pipeline = [ { "$project": { "weight": stack[0], "whiskey": "$$ROOT", "collection": collect[0] } }, { "$match": qObj.whiskeyFilter }, { "$sort": { "weight": 1 } }, { […]

使用Keystone.js中的描述发布显示图库图像

我是Keystone.js和Mongodb / nodejs开发的新手,但我已经喜欢它了。 我试图改变梯形图中的默认画廊行为,以添加一个名称和描述,因为“Types.CloudinaryImages”似乎不允许它在画廊中的每个图像。 正如图像库中使用keystonejs上的CloudinaryImage标题所示,我添加了一个新的“图像”模型,并修改了我的主页(应该显示图库的地方)的路线。 查询控制台日志时,查询确实会检索图库并填充到图像的链接,但是我的代码显示它们时出现错误。 图库模型 var keystone = require('keystone'); var Types = keystone.Field.Types; /** * Gallery Model * ============= */ var Gallery = new keystone.List('Gallery', { map: { name: 'name' }, autokey: { from: 'name', path: 'key', unique: true }, }); Gallery.add({ name: { type: String, required: true }, published: {type: Types.Select, options: […]

带有打印机&mongoose的静态方法会:“一个接口只能扩展一个类或另一个接口”。

我尝试添加一个静态方法到我的模型,但如果我这样做,我得到这个错误: An interface may only extend a class or another interface. 这是我的代码: import * as mongoose from 'mongoose'; import {IPermission} from './IPermission'; export interface IRoleDocument extends mongoose.Document { name: string, inherit_from: { type: mongoose.Schema.Types.ObjectId, ref: 'Role' }, permissions: Array<IPermission> }; export interface IRole extends mongoose.Model<IRoleDocument> { }; 错误来自export interface IRole extends mongoose.Model<IRoleDocument> 格尔茨