Articles of nosql

如何在NoSQL和SQL之间进行select?

我的问题是,我想学习nodejs / express,并做一个超级简单的Web项目。 这将是一个数据库与表:用户,video_games,类别。 该网站将只显示游戏列表(只是一个例子)。 在这种典型的情况下,什么会更有效:Mysql或MongoDB(SQL或NoSql)?

了解NoSQL数据build模 – 博客应用程序

我正在Node.js + MongoDB数据库中创build一个博客应用程序。 我曾经使用像MySQL这样的关系数据库,但是这是我第一次使用NoSQL数据库。 所以我想在继续前进之前遵循我的MongoDB数据模型。 我已经决定我的blogDB有3个集合 post_collection – 存储关于该文章的信息 comment_collection – 存储关于文章评论的信息 user_info_collection – 包含用户信息 PostDB { _"id" : ObjectID(…), "author": "author_name", "Date": new Date(….), "tag" : ["politics" , "war"], "post_title": "My first Article", "post_content": "Big big article" "likes": 23 "access": "public" } CommentDB { "_id" : Objectid(…), "POST": "My First Article", "comment_by": "User_name", "comment": […]

mongodb查询里面有多个查询

在尝试根据mongodb上的另一个查询的结果进行查询时遇到问题。 我试图做一个初步的查询,然后对第一个查询的结果中的每一个做另一个查询。 我这样做的原因是因为我有两个不同的集合,我需要从一个集合中join一些数据与另一个集合的数据。 在一个SQL世界中,我可以很容易地使用JOIN来做到这一点,但是因为我在这个中使用了mongodb,所以我不能真正使用JOIN,所以我猜想在第一个查询的callback函数内部做一个for循环是要走的路。 这是我正在使用的代码… var resultSet = []; db.get('busstopcollection').find({id_bus_stop: parseInt(req.body.busstopid)}, function(e, docs){ if(e || docs.length === 0) { console.log("Sorry, wrong id."); return e; } for(var m=0; m<docs.length; m++){ var auxRes = {}; auxRes.id_bus = docs[m].id_bus; auxRes.id_bus_stop = docs[m].id_bus_stop; auxRes.coord_x = docs[m].coord_x; auxRes.coord_y = docs[m].coord_y; auxRes.id_bus_variation = docs[m].id_bus_variation; db.get('buscollection').find({id_bus: parseInt(docs[m].id_bus)}, function(e, busDocs){ auxRes.s_origin_description = busDocs[0].s_origin_description; […]

Mongodb是否缺乏交易成为交易破坏者?

我一直在做一些研究,但已经达到了我认为MongoDB / Mongoose(在Node.js上)不适合工作的地步。 这是场景… 两个文件:帐户(金钱)信息和库存信息 检查用户的帐户是否有足够的钱 如果是,请检查并扣除库存 从帐户信息扣除资金 看来我真的需要一个交易系统来防止其他事件在步骤之间改变数据。 我是正确的,还是可以在MongoDB / Mongoose中处理? 如果没有,是否有一个NoSQL的数据库,我应该检查出来,最好与Node.JS的支持?

在社交networking中的“喜欢”数据库devise(MongoDB)

我正在使用MongoDB构build一个照片/video共享社交networking。 社交networking有一个Feed,个人资料和一个追随者模型。 我基本上采用了类似的方法来为我的“社交饲料”devise这篇文章 。 具体来说,当用户发布故事时,我使用了采用桶式方法的扇出。 我的问题是当用户“喜欢”一个故事。 我目前也在使用写扇出的方式,基本上增加/减less每个用户的feed的故事“喜欢计数”。 我认为这可能是一个糟糕的devise,因为用户“喜欢”比他们发布更频繁。 用户可以通过喜欢和不喜欢stream行的post来快速饱和服务器。 你们在这里推荐什么devise模式? 我应该使用扇形阅读吗? 继续与后台工作人员一起使用扇出? 如果解决scheme是“后台工作人员”,您推荐使用什么方法为后台工作人员? 使用Node.js 任何帮助表示赞赏! 谢谢,亨利

喜欢mongoose

使用正则expression式(只有/最好)的方式来使用LIKE (如SQL中)在mongoose中的function? 我的例子: Thing.find({ name: new RegExp('^' + req.body.name, "i") }) .limit(5) .sort('-rating') .lean(true) .exec( function (err, things) { res.send(things); } );

如何按照Mongoose中的字段对logging进行分组?

我有一个MongoDB文件,其logging如下所示: [ { _id: id, category_name: 'category1', parent_category: null }, { _id: id, category_name: 'category2', parent_category: null }, { _id: id, category_name: 'subcategory1', parent_category: id_parent_1 }, { _id: id, category_name: 'subcategory2', parent_category: id_parent_1 }, { _id: id, category_name: 'subcategory3', parent_category: id_parent_2 }, { _id: id, category_name: 'subcategory4', parent_category: id_parent_2 } ] 正如你所看到的,我正在存储一个parent_category为null类别,并且子类别具有父类别的ID。 我正在寻找的是把这些分成几种格式: [ { […]

MongoDB将包含数组字段的文档与所有匹配查询的元素进行匹配

从$elementMatch的MongoDB文档: $ elemMatch操作符将包含数组字段的文档与至less一个匹配所有指定查询条件的元素进行匹配。 但是,如何将包含数组字段的文档与匹配查询的所有元素进行匹配? 例如,我有这样的文件: { "_id": ObjectId("55c99649b8b5fc5b0a2f1c83"), "sku": "ed-39211", "created_at": ISODate("2015-08-11T06:29:29.139+0000"), "formats": [{ "name": "thefile", "_id": ObjectId("55c99649f2e2d6353348ec9c"), "prices": [{ "price": 4.49, "currency": "GBP", "territory": "GB", "_id": ObjectId("55c99649f2e2d6353348ec9f") }, { "price": 6.99, "currency": "USD", "territory": "US", "_id": ObjectId("55c99649f2e2d6353348ec9e") }, { "price": 6.99, "currency": "CHF", "territory": "CH", "_id": ObjectId("55c99649f2e2d6353348ec9d") }] }] } 我需要匹配所有formats.prices.price > 5的所有文档 如果我使用以下查询: […]

使用IN查询使用nodejs'cassandra-driver'准备好的查询

这是一个潜在的新手问题,但我无法在野外find答案。 我目前正在build立一个简单的用户事件日志这个表单(一些属性避免这个简单): CREATE TABLE events.by_hour ( level tinyint, /* 60 = FATAL, 10 = TRACE */ hour int, /* in YYYYMMDDHH format */ insertion_time timeuuid, userid TEXT, message TEXT, PRIMARY KEY ((type,hour),userid,insertion_time)) WITH CLUSTERING ORDER BY (userid ASC, insertion_time ASC); 我想做一个准备好的查询来获取所有的事件,任意过滤一个给定的用户在几个小时的过程中理想的一套水平。 我可以轻松构build查询单个级别和小时的查询: var cassandra = require('cassandra-driver'); var client = new cassandra.Client({contactPoints: ['127.0.0.1']}); var query = […]

查询条件丢失关键架构元素:validation错误

我正在试图使用下面的代码查询dynamodb : const AWS = require('aws-sdk'); let dynamo = new AWS.DynamoDB.DocumentClient({ service: new AWS.DynamoDB( { apiVersion: "2012-08-10", region: "us-east-1" }), convertEmptyValues: true }); dynamo.query({ TableName: "Jobs", KeyConditionExpression: 'sstatus = :st', ExpressionAttributeValues: { ':st': 'processing' } }, (err, resp) => { console.log(err, resp); }); 当我运行这个,我得到一个错误说: ValidationException: Query condition missed key schema element: id 我不明白。 我已经将id定义为jobs表的分区键,并且需要find所有处于processing状态的作业。