Tag: mongodb query

MongoDb嵌套数组查询以下关系

说我有一个用户架构: UserSchema = new Schema({ name: { first: { type: String, trim: true }, last: { type: String, trim: true } }, username: { type: String, trim: true, required: true }, email: { type: String, trim: true, required: true }, hashed_password: { type: String, trim: true, required: true }, profile_image: { type: String, trim: true, […]

MongoError:找不到任何特殊的索引:2d(需要索引),2dsphere(需要索引)$ nearSphere

这是我的第一个问题,所以如果问得不好,或者我的英文不好,请耐心等待。 我正在尝试在Node.js中在MongoDB中执行Geospatioal Querys 这个查询工作得很好 collection.find( { loc : { $geoWithin : { $centerSphere : [ [ point.coordinates[0], point.coordinates[1]] , getRadiusMeters(radius) ] } } } ) 但是当我试图用$ nearSphere做同样的事情时: collection.find( { loc :{ $nearSphere : { $geometry : { type : "Point" , coordinates : [ point.coordinates[0], point.coordinates[1]] } , $maxDistance : getRadiusMeters(radius) } } } ) […]

检索数组的索引

我有这样的文件 … "users" : [ { "name":"Bob" }, { "name":"Foo" }, { "name":"Bar" }, { "name":"Boo" } ] … 我想findBar的索引 db.coll.find({"users.name":"Bar"}) 我可以检索用户数组内的酒吧索引吗? (在这种情况下:2)

更新具有数组和对象键的嵌套对象正在dynamic地到来

我有一种情况下,我需要执行查询,其中有一个dynamic的密钥生成来添加数组中的数据 var tp = 'unique_key'; db.sr_caller_info.update({caller:9967771131, month:201501},{$push :{ data:{tp:{ "abc" : 12, "xyz" : 30, "start_epoch" : "", "answer_epoch" : "", "end_epoch" : "", "file" : "xxx", }}}}) 我的数据库结构如下 { "caller": xxxxx, "circle": "xxxx", "data": { "unique_key1": [ { "abc": 12, "xyz": 30, "start_epoch": "", "answer_epoch": "", "end_epoch": "", "file": "xxx", }, { "abc": 12, […]

从文档和数组元素聚合得到平均值

我有这些对象的数组: item1 = { name:'item', val:1, list:[ {type:'a',value:1}, {type:'b',value:1}, {type:'c',value:1} ] }; item2 = { name:'item', val:5, list:[ {type:'a',value:3}, {type:'b',value:99}, {type:'c',value:1} ] }; 他们都有相同的数组,相同的types“a”,“b”和“c”,但不同的值。 我怎样才能得到types“a”,“b”和“c”的平均值? 我怎样才能得到所有项目的平均价值? 我期待着 itemAvg = { name:'item', val:3, list:[ {type:'a',value:2}, {type:'b',value:50}, {type:'c',value:1} ] }; 我认为首先按名称分组,然后按列表。 然后展开列表。 然后按types对列表进行分组。 但是这不起作用 model.aggregate([ { $match : <condition> }, { $group : { _id:{name:'$name'}, ValAvg:{$avg:'$val'} List:{$push:'list'} […]

用mongoose计数嵌套的数组

我在一个node.js应用程序中通过mongoose使用mongoDB。 在我的分贝,我有这个一般的格式: 图书: BookSchema = { variousData, //Books contain pages pages: [{type: pageSchema}] } 页数: pageSchema = { variousData, //Pages contain frames frames: [frameSchema] } 框架: frameSchema = { variousData } 我想写一个计数查询,将计算所有书籍中所有页面的总帧数。 所以,如果我有我的数据库中的这个内容: Book1 = { data:data, pages: [ {data:data, frames: [frame1,frame2,frame3] }, {data:data, frames: [frame1,frame2,frame3] }, {data:data, frames: [frame1,frame2,frame3] } ] } 和 Book2 […]

如何使用$ push查询将数据插入到子文档中,而不是检索文档并将其保存回来

编辑:这实际上是工作 作为Mongoose – Subdocs:“Adding subdocs”文档说,我们可以使用push方法添加一个subdoc(即parent.children.push({ name: 'Liesl' }); ) 但我想走得更远,并希望使用$push操作符来插入子文档。 我有两个Schema: ThingSchema : var ThingSchema = mongoose.Schema({ name: { type: String, required: true }, description: { type: String } }); 和BoxSchema ,它是BoxSchema的子文档( things )数组的主文档: var BoxSchema = new mongoose.Schema({ name: { type: String, required: true }, description: { type: String }, things: { type: [ThingSchema] […]

Mongo查找内部和对象数组的多个匹配

我正在做的是有一个客户在页面上input的所有文件的列表。 然后我有多个search框,他们可以用来缩小文件。 每个search框都绑定到一个字段。 我希望能够在input时search和缩小结果。 我需要search的其中一个字段是一个包含其他对象的数组。 如果他们正在search的字段位于对象的基础中,但是我无法findsearch对象数组的方法,则可以成功完成此操作。 下面是一个完整对象的例子。 { "_id" : "fNgY9TcdCnyEFwePT", "companyCode" : "demoAccount1", "tripNumber" : 5002, "tripNumberText" : "5002", "custID" : "TnfFBRt3bZvNrSRB7", "customerName" : "Am Transport Inc", "orderLoadNum" : "50021321", "orderPlacedDate" : ISODate("2016-01-27T08:00:00.000Z"), "orderDispatch" : [ { "Address" : "4111 Aurora Ave N", "Appt" : "", "Cases" : "", "City" : "Seattle", "Contact" : […]

有没有办法find一个匹配两个不同的填充文件,并在findOne()中获取他的文档?

我用mongoose与组合mongoDb / nodejs。 我想找一个具有一定条件的文档。 有我的模式 : var prognosticSchema = new Schema({ userRef : { type : Schema.Types.ObjectId, ref : 'users'}, matchRef : { type : Schema.Types.ObjectId, ref : 'match'}, … }); 模型模式“用户”包含一个string“电子邮件” ,模型“匹配”包含一个数字“id_match”像这样: var userSchema = new Schema({ email: String, … }); 然后 var matchSchema = new Schema({ id_match: {type: Number, min: 1, max: 51}, […]

从Mongodb中检索一个元素

我试图从基于ID的类集合中检索一个教训。 我从以前的答案放在一起,但它不返回任何东西。 有人能指出我正确的方向吗? 我的代码 Class.aggregate([ {$match: {'lessons._id': id}}, {$project: { lessons: {$filter: { input: '$lessons', as: 'lesson', cond: {$eq: ['$$lesson._id', id]} }}, _id: 0 }} ]) 例 { "_id" : ObjectId("14354"), "title" : "Easy Math", "instructor_id" : "2454", "lessons" : [ { "lesson_body" : "2 + 2 = 4", "lesson_title" : "Addition", "_id" : ObjectId("3456") […]