Articles of 子文档

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

在与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" […]

如何用子文档数组更新MongoDB文档

我正在使用一个MongoDB数据库,这个数据库的集合模型类 , 学生 , 主题和学术performance 。 下面是基于Mongoose的模式和模型: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var ObjectId = Schema.Types.ObjectId; // SUBJECT collection var subjectSchema = new Schema({ name : { type: String, required: true }, category : { type: String, required: true } }); var Subject = mongoose.model('Subject', subjectSchema); // STUDENT collection var studentSchema = […]

Mongoose – 查询获取文档的所有子文档

我对mongoose很新,我有一个公司名单,每个公司都有一个用户的子arrays。 我只想用mongoose检索特定公司的所有用户: 一个单一的公司就像 { "_id": "57ffa47f5b70f90831212348", "name": "mycompany", "address": "…", "phone": "…", "users": [ { "_id": "57ffa47f5b70f90831212347", "username": "alpha", "name": "myname", "surname": "mysurname", "password": "…" } ] } 我试着用 Company.findOne({ 'name': req.user.name }) .aggregate({$unwind: '$users'}) .exec( function(err, users) { if (err) res.status(500).send(err); res.json(users); }); 但我没有运气…我不知道如何正确使用聚合。

是否有可能返回多个子文档mongoDB和Node.js?

我目前有一个模式,目前看起来像: var User = new Schema({ id: String, firstName: String, lastName: String, password: String, username: String, position: [{ title: String, location: String, start: String, term:Number, description:String, date: {type: Date, default: Date.now} }] }); 我有两个用户,每个都有两个embedded式位置文档。 用户1: "position" : [ { "title" : "Web Developer", "location" : "Dublin", "start" : "May 2017", "term" : 6, "description" : […]

MongoDB:如何插入一个子文档?

我在我的MEAN项目中使用子文档来处理每个订单的订单和项目。 这些是我的(简化的)模式: var itemPerOrderSchema = new mongoose.Schema({ itemId: String, count: Number }); var OrderSchema = new mongoose.Schema({ customerId: String, date: String, items: [ itemPerOrderSchema ] }); 要在itemPerOrderSchema数组中插入项目,我目前的做法是: var orderId = '123'; var item = { itemId: 'xyz', itemsCount: 7 }; Order.findOne({ id: orderId }, function(err, order) { order.items.push(item); order.save(); }); 问题是,我显然希望每个itemId一个项目,这样我就可以获得每个项目的许多子文件… 一个解决scheme可能是遍历所有order.items ,但这不是最优的,当然( order.items可以我很多 …)。 […]

MongoDB过滤多个子文档

我在mongo数据库中有这样的文档结构,我想过滤只显示活动的子文档:活跃的汽车和活跃的水果。 { "name":"Andre", "fruits":[ { "active":true, "fruitname":"apple" },{ "active":false, "fruitname":"banana" } ], "cars":[ { "active":false, "carname":"ford" },{ "active":true, "carname":"GM" }, ] } 这是我想要的结果。 { "name":"Andre", "fruits":[ { "active":true, "fruitname":"apple" } ], "cars":[ { "active":true, "carname":"GM" }, ] } 我尝试过Aggregate但是当任何车辆或任何水果活跃时,它都不会返回。 m_object.aggregate([ { $match : { "name": "andre" }}, { $unwind : "$fruits" }, { $unwind : […]

Mongoose对象文字的Subdoc不可访问

使用Mongoose,如何访问数组中的子文档? 在架构中,我已经根据文档使用对象字面值来声明我的子文档 。 我已经检索到父文档后,可以注销doc.children并查看对象数组,但是当我试图访问任何文档时,我得到的是未定义的。 doc.children不作为数组返回,所以如何访问子文档? 架构: var parentSchema = new Schema({ children: [{ name: 'string' }] }); 用法: console.log(doc.children); //[{name: 'hello'}, {name: 'world'}] doc.children[0]; //undefined doc.children['0']; //undefined

Mongoose populate()返回空数组

我想通过clientSchema中的属性'token'来查询子文档数组。 但我无法填充子文档数组。 它总是返回空值。 这是我的尝试 var performAuthAsync = promise.promisify(performAuth); var response = {}; performAuthAsync(req).then(function (client) { sendStatus(res, 200, { "success": "true", "value": client }); }).catch(ApiError, function (e) { response.error = "true"; response.message = e.message; if (e.message == "Invalid Authorization" || e.message == "Unauthorized access") { console.log(e.message); sendStatus(res, 401, response, req.query.type); } else { sendStatus(res, 500, response, […]

Mongoose不保存嵌套的子文档

我需要将一些子文档保存在模式的子文档模式中。 保存function是这样的: exports.add = function(req, res){ var cliente = new Cliente(req.body); var sedi = []; for(var key in req.body.sede){ var sede = new Sede(req.body.sede[key]); var luoghi_consegna_sedi = []; for(jey in req.body.sede[key].lcs){ var luogo_consegna_sede = new LuoghiConsegnaSede(req.body.sede[key].lcs[jey]); //Sub document luoghi_consegna_sedi.push(luogo_consegna_sede); } sede.luoghi_consegna_sedi = luoghi_consegna_sedi; //Sub docuemnt sedi.push(sede); } cliente.sedi = sedi; cliente.save(function(err){ if(err) return res.sendStatus(400); return […]

当父文档可能不存在时更新MongoDB子文档

这里是我的数据,包括书籍collections,还有books.reviews子集合。 books = [{ _id: ObjectId("5558f40ad498c653748cf045"), title: "Widget XYZ", isbn: 1234567890, reviews: [ { _id: ObjectId("5558f40ad498c653748cf046"), userId: "01234", rating: 5, review: "Yay, this great!" }, { _id: ObjectId("5558f40ad498c653748cf047"), userId: "56789", rating: 3, review: "Meh, this okay." } ] }] 在Node.js(使用Mongoose)中,我需要用户能够通过表单提交评论,并将评论和书籍发送到服务器,并具有以下条件: 如果图书不存在已经具有特定的isbn,添加它,然后添加审查(它显然不存在)。 如果这本书确实存在… 如果此用户的评论不存在,请添加。 如果该用户的评论确实存在,请对其进行更新。 我可以用4个单独的查询来做到这一点,但我知道这不是最佳的。 什么是我可以使用的最less数量的查询(当然,这些查询是什么)?