Tag: mongodb

Mongoose更新子文档数组

我可以更新匹配我的更新查询数组中的所有子文档? 这里是收集元素的例子: { x: 1, myarray: [ { a: 1, b: 2, }, { a: 1, b: 4, } ] } 然后我写这样的查询: MyModel.update({x: 1, myarray.a: 1}, {$set: {"myarray.$.b": 3} }, function(err) { }); 它只更新myarray中的第一个子文档。 在文档中写道,这种查询只更新第一个文档。 我想知道是否有更新数组中所有匹配的子文档的方法。 提前致谢。

可能填充两个级别?

说我有如下的collections品/文件: 问题收集: { _id: ObjectId("0000"), title: "test question", survey: ObjectId("1234") //abbreviated for question assume this is a legit object id } 调查收集: { _id: ObjectId("1234"), title: "survey title!", user: ObjectId("5678") } 用户集合: { _id: ObjectId("5678"), Name: "Abe" } 有没有办法给我打电话: questions.findOne({_id: "0000"}).populate("survey.user") 获取用户信息与问题? 我明白,我可以填补question的直接父母,但我很好奇,如果可以为祖父母。

什么是处理国家作为对mongoose属性(mongodb)的理想方式?

我在jobSchema上有一个名为country的属性,它是必需的string。 基本上只是得到ISO-2字母代码(即:美国,新西兰或其他)…这就是保存在数据库中的对象的country属性。 然而,我有一个文件系统上的包含一个对象,包含全名(即:美国)和纬度/经度坐标的countries.json文件。 { "name": "United States", "iso2": "US", "lat": "37.09024", "lng": "-95.712891" } 我真的不需要任何crud界面。 所以我已经在数据库之外build立了一个API来将“US”string从数据库映射到文件对象。 但是,这被certificate是一个PITA。 什么是处理这个问题的好方法? 我应该只是将这个完整的国家对象存储在数据库中,并留在那个? 这似乎是最简单的路线,除了一个国家定义的变化,那么我将所有这些陈旧的数据散落在我的mongo数据库,无论这个数据保存在哪里。

查找具有与两个(或更多)属性匹配的子文档的文档

在与mongoose的节点我想在集合Contentfind一个对象。 它有一个名为users的子文件列表,它具有属性stream , user和added 。 我这样做是为了在users.user字段中获取具有某个用户的_id属性的所有文档。 Content.find( { 'users.user': user._id } ).sort( { 'users.added': -1 } ) 这似乎工作(虽然我不确定.sort是否真的在这里工作,但是,我想匹配两个字段,如: Content.find( { 'users.user': user._id, 'users.stream': stream } } ).sort( { 'users.added': -1 } ) 这似乎并不奏效。 什么是正确的方法来做到这一点? 这是一个示例文档 { "_id" : ObjectId("551c6b37859e51fb9e9fde83"), "url" : "https://www.youtube.com/watch?v=f9v_XN7Wxh8", "title" : "Playing Games in 360°", "date" : "2015-03-10T00:19:53.000Z", "author" : "Econael", "description" […]

在string数组上进行MongoDB全文search

所以我使用Node.js和MongoDB作为我的web应用程序。 我在为我的模式创build文本索引并search数组中的文本时遇到了一些麻烦。 我已经看过mongo文档,但没有find任何与此有关的具体内容。 我当前的实现在常规string值上成功search,但在[string]中查询文本匹配不会返回任何内容。 这是我的REST电话: …console.log("Query string: " + str); var qry = { "$text": { "$search": str } }; model.find(qry, function (err, results) {… 当我创build我的模式时: var blah = new Schema({ foo : String, bar : [String], … blah.index({ foo: 'text', bar: 'text' }); 任何查询都不会返回符合bar的结果。 foo某个查询string正常工作。

这种MEAN堆栈devise模式适用于1,000-10,000个用户规模吗?

比方说,当一个用户login到一个Web应用程序,他看到一个信息列表。 假设信息列表由两个dynos中的一个(通过heroku)服务,但是信息列表来源于 单个mongo数据库 (即,当他login进入时,nodejs dynos只是将mongo信息传递给用户Web应用程序)。 问题:假设我想让用户既可以修改又可以添加到信息列表中。 在1,000-10,000用户的规模下,以下策略是适合的: 用户修改/添加数据; HTTP POST发送到具有更新数据的两个nodejs dynos中的一个。 Dyno(无论哪一个)都需要修改/添加数据,并直接查询mongo数据库来更新数据。 Dyno向客户端发送更新成功的确认信息。 这个可以吗? 我需要添加更多的dynos(heroku)吗? 我基本上担心,如果一群用户试图一次访问一个数据库,速度会很慢,或者我以某种方式冒着损失1,000-10,000人的整个数据库的风险。 这种恐惧是否合理?

mongoose传递类function

当我把函数传给mongoose时,似乎不再有这个参考。 有没有更好的方法去做这件事? 所有function都因为长度原因而被简化。 我无法编辑getUsernameForId函数来获取其他参数。 我有课: var class = new function() { this.func1 = function(data) { return data + "test"; } this.func2 = function(data) { var next = function(username) { return this.func1(username); // THIS THROWS undefined is not a function } mongoose.getUsernameForId(1, func3); } } mongoose是这样的另一个类: var getUsernameForId = function(id, callback) { user_model.findOne({"id": id}, function(err, user) […]

通过Mongoose在MongoDB中存储另一个文档中embedded的文档的副本

我们有要求将一个Mongo文档的副本作为embedded式子文档存储在另一个文档中。 它应该有一个原始文件的参考。 复制的文档需要是深层复制,如原始快照。 原始文档的模式(使用Mongoose定义)不是固定的 – 它当前使用一种inheritance来允许对模式进行不同的添加,具体取决于“types”。 在Mongoose模型中有这样一个灵活的embedded式模式吗? 是否需要在运行时注入,何时才能知道模式? 我们目前的模型/模式是这样的: ///UserList Schema: – this should contain a deep copy of a List user: { type: ObjectId, ref: 'User' }, list: { /* Not sure if this is a how we should store the reference type: ObjectId, ref: 'List' */ listId: ObjectId, name: { type: String, required: […]

寻找嵌套的数组mongodb

所以我有一个这样的MongoDB文件: [ { "_id": "04", "name": "test service 4", "id": "04", "version": "0.0.1", "title": "testing", "description": "test", "protocol": "test", "operations": [ { "_id": "99", "oName": "test op 52222222222", "sid": "04", "name": "test op 52222222222", "oid": "99", "description": "testing", "returntype": "test", "parameters": [ { "oName": "Param1", "name": "Param1", "pid": "011", "type": "582", "description": "testing", "value": "" […]

collection.find()。属性返回undefined

我有以下代码: var permalinkVar = this.params.permalink; var imageVar = sites.find({'name':permalinkVar}).createdBy; console.log(imageVar); 在一个路由函数内,我试图返回createdBy属性,但我不知道为什么,但它返回undefined 。 谁能帮忙?