Tag: mongodb query

Mongoose – find():search选项内的对象不起作用

我有一个mongoose模式,看起来像这样: var mySchema = new mongoose.Schema({ … metadata: { isDeleted: { type: Boolean, default: false }, … } }); 我想获得我的mongobd数据库中应用filter的元素列表,所以我有以下对象: var searchOptions = { metadata: { isDeleted: false } }; 在执行查询之前,总是需要将metadata.isDeleted值设置为false ,从稍后将添加的其他参数Appart中设置为false 。 var objQuery = myModel.find(searchOptions, '-metadata'); 起初,我在Schema中的metadata对象之外有isDeleted属性,并且 var searchOptions = { isDeleted: false }; 用来完美的工作。 但是,因为我决定在我的metadata对象,是不是工作,并不能找出原因…

Mongoose:嵌套数组结构中的聚合查询

我遇到了一个MongoDB查询的问题。 我有一个名为“Answers”的集合,具有以下结构 { "_id": ObjectId("560acfcb904a29446a6d2617"), "path_id": ObjectId("560acae1904a29446a6d2610"), "step_id": "kids", "user_id": ObjectId("559ae27684ff12e88d194eb7"), "answers": [ { "id": "kids_q", "question": "Do you have kids?", "answer": "No" } ] } 正如你所看到的answers是一个数组,它可以有一个或多个对象,但总是一个数组。 首先,我想在step_id中得到答案的总数 我得到了使用聚合使用下面的查询 Answer.aggregate( { $match: { 'path_id': { $eq: path_id }, 'step_id': { $eq: step_id }, '' } }, { $group: { _id: { step_id: '$step_id' }, count: […]

mongoose – 用$ sum使用聚合创build新的属性

我试图在包含数字数组之和的所有文档中添加一个新字段。 这里是架构(为简洁起见删除无关字段): var PollSchema = new Schema( { votes: [Number] } ); 我build立模型: PollModel = mongoose.model('Poll', PollSchema); 我使用聚合创build一个新的字段,其中包含投票数组的总和。 PollModel.aggregate([ { $project: { totalVotes: { $sum: "$votes"} } } ]); 当我启动我的服务器,我没有得到任何错误; 但是, totalVotes字段尚未创build。 我用这个文档来帮助我。 它同样使用$sum运算符,我完全像文档说明的那样,但没有结果。

我可以在Mongoose中dynamic添加索引到我的模式吗?

例如我有以下结构的文件: { "subject":"Joe owns a dog", "content":"Dogs are man's best friend", "likes": 60, "year":2015, "language":"english" } 架构将是: var schema = new Schema({ subject: {type: String}, content: {type: String}, likes: {type: int}, year: {type: int}, language: {type: String} } schema.createIndex({"subject": "text"}); 我可以dynamic删除索引,并创build更多字段的另一个? 因此,如果现在在主题字段中search关键字,我想dynamic地改变它并在“主题”和“内容”中进行search。 改为: schema.createIndex({"subject": "text", "content": "text"}); 你认为这是可能的吗? 非常感谢。

如何聚合数组中ObjectID的出现次数?

我有两个集合; users和communities 。 我的用户可以链接到许多社区,所以我已经将linkedCommunities作为用户架构中的数组来链接,如下所示: const userSchema = new Schema({ linkedCommunities: [ { type: mongoose.Schema.ObjectId, ref: 'Community' } ] }); 在我的communities视图中,我想显示链接到每个社区的users数量,因此它会显示如下内容: | Community | Number of users | | ——— | ————— | | Community 1 | 45 | | Community 2 | 78 | | Community 4 | 107 | 理想情况下,当我在Community模型上查找时,我想要一个名为linkedUserCount的字段。 我敢肯定,我可以用某种方式来实现这一点,但我正在努力寻找合适的pipe道运营商和订单。

MongoDB Dynamic $ in

有没有办法dynamic地发送一个string列表到MongoDB的$in子句? 我尝试了类似下面的代码,但它不起作用,除了具有硬编码值的示例之外,我无法find更多信息。 restrictedUsersvariables可以填充任意数量的用户,所以我不能硬编码这个。 例如 : var restrictedUsers = "bob, joe, jimmy, roger, greg"; userNames = {"usernames": { $in: [restrictedUsers]}}; collection.find(userNames);

nodejs + mongo +查找+ $和错误:无法canonicalize查询

该查询是: {$and:[ {phone:phone}, {$gte:{date:'2014-08-25'}}, {$lt:{date:'2014-08-30'}} ]} 然后显示一个错误: { [MongoError: Can't canonicalize query: BadValue unknown top level operator: $gte] name: 'MongoError' } 这个错误是什么意思?

mongodb中的findAndModify错误 – nodejs – 错误代码17287

我收到以下错误: MongoError:例外:nextSafe():{$ err:“Can not canon canonicalize query:B adValue bad sort specification”,code:17287} functions.getNextIndex = function(callback){ db.collection('counters').findAndModify( {_id:'productId'}, {$inc: {sequence_value:1}}, function(err,data){ if(!err) callback(data); else callback(err); }); }

Node.js和MongoDB时区问题UTC未被驱动程序正确转换?

我有一个奇怪的事情发生,我希望有人能指出我失踪。 在MongoDB中,我有一个types为Date的字段DT 2014-10-01 10:28:04.329-04:00 MongoDB中date的例子 当我使用MongoClient从Node.js中查询MongoDB时,Node.js返回这个: 2014-10-01T14:28:04.329Z 据我所知,驱动程序是假设将UTC转换为当地时间。 就我而言,应该是东部时间(EDT)。 为什么Node会添加4个小时呢? 我使用Java驱动程序从Java将date加载到MongoDB中。 该variables是使用设置的 new Date();

findAndModify()在mongoose中给予exception

我有一个以下代码来更新子集合字段中的文档,我得到exception后面的代码。 router.route('/user/:_id/host/:_id/accept/').post(function(req, res) { Host.findAndModify({ "query" : { "_id" : req.body.eventid, "joinees" : { "$elemMatch" : { "userid" : req.body.userid } } }, "update" : { "$set" : { "joinees.$.status_code" : 1 }, }, "new" : true, "upsert" : false }, function(err, host) { if (err) { console.log(err); res.json(err); } else { console.log("kanishka"); res.json(host); } […]