Tag: nosql

在MongoDB中定义3个不同关系的模式(多对多,一对多…)

我在我的应用程序中有3个不同的模式: userSchema, questionSchema, listingSchema 三者的关系如下: 每个列表都有很多与其相关的问题(每个列表都有相同的问题)。 每个用户 可以在几个列表中回答很多问题。 许多列表中的许多用户都回答了每个问题 。 我试图围绕定义这些模式之间的正确关系(主要是因为“ _id = 100用户在_id = 3的列表中回答了_id = 5的问题,我如何更新所有这些最有效的方式?)。 到目前为止,我已经定义: questionSchema: var questionSchema = new Schema({ description: String }); userSchema: var userSchema = new Schema({ local : { email : String, password : String, name : String }, ApartmentsAndQuestions: [{ apartmentID: String, questionID: [String] /* one […]

如何find文档中是否存在元素 – MongoDB?

我正在尝试检查我的集合,以返回文档中的数组元素是特定值的所有文档。 例如,下面是我的一个JSON文档: [ { "employer" : "employer1@gmail.com", "applicants" : [ { "email" : "joe@gmail.com" }, { "email" : "fred@gmail.com" } ] }, { "employer" : "employer2@gmail.com", "applicants" : [ { "email" : "steven@gmail.com" } ] }, { "employer" : "employer3@gmail.com", } ] 现在,我想返回的是申请人数组不包含电子邮件"steven@gmail.com"或no applicants array任何文件。 在我上面的JSON例子中,它应该返回employer1和employer2的文档。 我已经尽可能地将申请人steven@gmail.com does not exist的文件归还,所以雇主1,但我不明白如何也可以包括employer3 。 我怎样才能做到这一点? 这是我到目前为止在JavaScript中的查询: collection.find({"applicants.email" : […]

Mongodb toArray()的性能

我有一个收集“匹配”与727000文件里面。 它里面有6个字段,没有数组只是简单的整数和对象ID。 我正在查询收集如下: matches.find({ $or: [{ homeTeamId: getObjectId(teamId) }, { awayTeamId: getObjectId(teamId) } ], season: season, seasonDate: { '$gt': dayMin, '$lt': dayMax } }).sort({ seasonDate: 1 }).toArray(function (e, res) { callback(res); }); 结果只返回大约7-8个文件。 查询需要约100ms,我认为这是相当合理的,但主要问题是,当我调用方法toArray(),它增加了约600毫秒! 我正在我的笔记本电脑,英特尔酷睿I5,6GB内存上运行服务器,但我不能相信它为7-8文件增加了600毫秒。 尝试使用mongodb本地驱动程序,现在切换到mongoskin,并获得同样缓慢的结果。 有什么build议么 ?

MongoDb数据关系

我有一个: MongoDB数据库 NodeJS上的REST API Angular JS前端 现在我想创build数据库schma。 这将是: 故事 – 用户插入故事与描述。 问题 – 与故事的关系。 有一个故事可以有100多个问题。 答案 – 与问题的关系。 一个问题只能有一个答案。 我应该在MongoDb中select什么types的关系? 我需要更快的精神。 例如: { title: "Story title", descr: "Story descr", questions: [ {body: "Question body", user: "User} ] }

在一个到多个embedded式文档mongodb中添加一个条目

我是MongoDB的新手,遇到以下用例: 让我说我有我的MongoDB文件是这样的: { _id: "joe", name: "Joe Bookreader", numbers: [ { mobile: 741134217, }, { home: 123452411 } ] } 现在我需要两个执行两个操作: 添加一个新号码{office:112342282} 删除用户的家庭号码 我相信我们可以在Mongo中做到这一点,但我没有得到任何地方的语法,我也无法在MongoDB文档中find它。 PS我正在使用和尚图书馆这样做,僧侣具体的语法会有很大的帮助。 但否则也会​​帮助我!

Couchdb大小pipe理

我有一个名为restaurants.couch的沙发数据库,​​每周一次我会压缩数据库 ,文件大小将从20MB到11MB。 我看到旧版本不见了 – 我不需要。 不过,我注意到.restaurants_design文件夹的大小超过100MB,在这里有30多个.view文件。 我执行了紧凑视图和清理视图 ,并将其减less到8MB,只有1 .view文件。 我的应用程序也运行得更快一点。 我的问题: 1)为什么.restaurants_design变得如此之大? 什么原因。 这只是一个观点。 2) 紧凑视图和清理视图的好处是什么(除了减小文件大小)? 3) 紧凑视图和清理视图的副作用是什么? 如果我不需要版本控制,我会后悔吗? 4)如果应用程序实际上并不需要版本控制,而是使用一些简单的nosql数据库以及某些视图,那么应该如何执行压缩数据库,压缩视图和清理视图。

在CouchDB中以下划线开头的关键字

有没有在couchDB名称前面加上下划线的名字。 如果我有以下划线开头的键名,我总是收到错误。 谢谢

mongo如何更新文件

从命名为user的集合中给出以下模式: { "email": "somebody@gmail.com", "classes": [ { "className": "AAAA1111", "marks": [72, 85, 64], "grades": [20, 40, 30] }, { "className": "BBBB2222", "marks": [12, 25, 43], "grades": [32, 42, 32] } ] } 我将如何添加另一个类的人与电子邮件somebody@gmail.com? 例如,如何添加子文档 { "className": "CCCC3333", "marks": [75, 85, 95], "grades": [20, 30, 50] } 同时保留现有的信息? 如何删除类AAAA1111而不影响文档的其余部分? 我是mongo的新手,遇到了我尝试过的解决scheme。 最佳做法是什么?

Mongo DB插入函数语法

我对Mongo的插入函数中看到的可选callback的目的感到困惑。 这到底是什么用的? var mongo = require('mongodb').MongoClient var url = 'mongodb://localhost:27017/learnyoumongo'; // learnyoumongo is the Database var firstName = process.argv[2]; var lastName = process.argv[3]; var doc = { 'firstName': firstName, 'lastName': lastName } mongo.connect(url, function(err, db) { if (err) throw err; // db gives access to the database var docs = db.collection('docs'); docs.insert(doc,function(err, data){ // What […]

基于订阅的nosql内存数据库

我需要基于订阅的内存数据库,我可以在我的数据更改callback(我将只用于我的testing)。 我使用了gunDB ,它只能这样工作: var Gun = require('gun'); var key = 'something_long'; var state = { a: 1, b: 2 }; var gun1 = Gun(); var gun2 = Gun(); gun1.put(state).key(key); gun2.get(key).on(function(val) { console.log('Value for gun2 (using ".on") is: '); console.dir(val); }); 当我交换gun1.put和gun2.get它不起作用。 这意味着我不能真正订阅,直到钥匙不在那里。 这个例子不起作用(callback永远不会被调用): var Gun = require('gun'); var key = 'something_long'; var state = { […]