Tag: mongodb

在嵌套数组中search多个值

我有以下集合: { _id: 1, docs: [{ name: file1, labels: [label1, label2, label3, label4] },{ name: file2, labels: [label3, label4] },{ name: file3, labels: [label1, label3, label4] }] } 当用户search标签时,我需要获取所有包含这些标签的文档。 所以如果用户search“label1”和“label3”,我需要得到“file1”和“file3”。 目前我有以下代码: var collection = db.collection(req.user.username); collection.aggregate([ // Unwind each array { "$unwind": "$docs" }, { "$unwind": "$docs.labels" }, // Filter just the matching elements { […]

我怎么能修改我的mongodb / mongoose查询,以便它需要对象的数组而不是数组的string?

在我的应用程序中,我有一个评论架构: var CommentsSchema = new Schema({ user_id: {type: String, required: true, ref: 'users'}, text_content: {type: String}, is_anonymous: {type: Boolean, default: false} }); 现在我正在构build一个mongoose查询来下载所有评论并将其显示给用户。 由于我不想从最终用户阻止的用户下载post,所以我引入了排除阻止作者的post的可能性: var blockedUsers = req.body.blockedUsers; function withBlockedUsers(query, blockedUsers) { if(blockedUsers != undefined){ query.$and.push({ 'user_id' : { $nin: blockedUsers } }); } return query; } var query = {}; query.$and = []; query […]

Nodejs mongodb在不应该的时候返回空数组

我有2个在MongoDB用户和审查集合,模式是用户(_id,名字,姓氏,电子邮件,密码)和评论(_id,reviewForID,reviewdByID,reviewText),我有一个快递的方法,我将用于返回用户和与该用户相关的所有评论,但是当我尝试查询评论集合时,我有时会得到一个返回的空数组。 在getReviews()函数中发生错误,我已经注释了导致错误的行。 我不知道是什么原因造成的错误,为什么只有当我添加toString() 注意:getReview()函数的目的是从数据库获取所有评论的数组,并将该数组附加到userA对象,然后将userA对象作为响应发送到客户端 var ObjectId = require('mongodb').ObjectID; //used to query objs by id //parameters are (userid) app.post('/getUserInfo', function (req, res) { var queryObj = { _id: new ObjectId(req.body.userid)}; MongoClient.connect(url, function (err, db) { if (err) { console.log('Unable to connect to the mongoDB server. Error:', err); } else //HURRAY!! We are connected. 🙂 { var […]

想在mongobd node.JS中通过_id得到参考集合的对象

我想通过引用id集合来获取特定logging的所有细节。 { "_id" : ObjectId("586c8bf63ef8480af89e94ca"), "createdDate" : ISODate("2017-01-04T05:45:26.945Z"), "branch" : { "$ref" : "branchmst", "$id" : "5864ac80fa769f09a4881791", "$db" : "eviral" }, "__v" : 0 } 这是我的collectionslogging。 我需要所有来自“branchmst”集合的详细信息,其中“_id”是“5864ac80fa769f09a4881791”。

如何更新mongoose的logging

我正在尝试更新循环中的logging字段,并注意该字段是一个数组,我的代码如下, Employeehierarchy = mongoose.model('Employeehierarchy'), function (done) { var ObjectId = require('mongoose').Types.ObjectId; var item = {'childrens':{$in:[ ObjectId(employee.manager)]}}; Employeehierarchy.find(item).exec(function (err, employeehierarchy) { if (err) { return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); } else { if (employeehierarchy && employeehierarchy.length > 0) { employeehierarchy.forEach(function (v1, i1) { v1.parents = employee._id; employeehierarchy = _.extend(employeehierarchy, v1); employeehierarchy.save(function (err) { }); }); done(); […]

隐藏事件date比今天早在快递和mongoose

我有一个rest服务,获取存储在一个MongoDB中的所有事件,并对它们进行sorting,但是如何不显示当前date和时间? //return all events router.get('/', function(req, res, next) { Event.find({}, null, {sort: {date: 1}}, function(err, events) { if (err) return next(err); res.json(events); }); });

mongoose条件查询 – 类似声明的情况

我想创build一个查询,将返回给定年份的收入集合。 我的模式是这样的: export const IncomeSchema = new mongoose.Schema({ name: { type: String, required: true }, amount: { type: Number, required: true }, amountAfterTax: { type: Number, required: false }, dateFrom: { month: Number, year: Number }, dateTo: { month: Number, year: Number }, isMonthly: { type: Boolean, required: true }, userId: { type: mongoose.Schema.Types.ObjectId, ref: […]

Mongoose中的子文件总和

目前我有这个模式。 var cartSchema = new Schema({ userPurchased: {type: Schema.Types.ObjectId, ref: 'users'}, products: [ { product: {type: Schema.Types.ObjectId, ref: 'products'}, size: {type: String, required: true}, quantity: {type: Number, required: true}, subTotal: {type: Number, required: true} } ], totalPrice: {type: Number, default: 0, required: true} }); 数据库logging的例子 { "_id": { "$oid": "586f4be94d3e481378469a08" }, "userPurchased": { "$oid": "586dca1f5f4a7810fc890f97" […]

search数组Mongoose中的对象

假设我有一个叫做部门的模型。 我有一个房间arrays,每个房间都有一个病人(有病人)。 我想让耐心等待请求的病人。 有没有办法做到这一点? var department = mongoose.model('department', { departmentName: String, rooms: [ { roomNumber: String, width: Number, height: Number, posX: Number, posY: Number, sanitary: Boolean, childcareArea: Boolean, lounge: Boolean, patient: { patientnr: Number, firstname: String, lastname: String, reasonOfHospitalization: String, dateOfHospitalization: Date, expectedDateOfDischarge: Date, vegetarian: Boolean, needsHelp: Boolean, comments: String, department: String, roomNumber: String, nextTreatment: […]

可能? $添加数组的值与对象总值进行比较

mongodb native for node.js(驱动程序版本是2.2.4和MongoDB shell版本:3.2.9) 我的collections有这样的对象: {x:[{v:0.002},{v:0.00002}],t:0.00202} //<this one has the full total in its values {x:[{v:0.002},{v:0.002}],t:0.00202} {x:[{v:0.002},{v:0.002}],t:0.3} (这里显示没有他们的对象id) 我不确定如何将所有xv加起来,只返回xv总和大于或等于对象t的对象 aggregate({"t":{"$gte":{"$add":["xv"]}}}) 返回每一个对象,我没有任何其他的想法阅读文档的语法的顺序。 mongodb甚至可以在查询中做到这一点?