Articles of 子文档

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数量的查询(当然,这些查询是什么)?

mongoose – 引用子文档的ObjectId

ModelA中的ObjectId是否可以引用modelB中的子文档? var C = new Schema({…}); var B = new Schema({c: [C]}); var A = new Schema({c: { type: ObjectId, ref: 'ModelB.ModelC' }); var Model_A = mongoose.model('ModelA', A); var Model_B = mongoose.model('ModelB', B); var Model_C = mongoose.model('ModelC', C);