nodejs 查询mongodb内嵌数
如图:需要获取id为123ljdifs值条目中,unknowwords内嵌数组中word 等于red的一条数据
MongoClient.connect(url,function(err,db){//使用管道聚合获取内嵌数组中的数据 dbo = db.db('words')//这里选择数据库 dbo.collection('guest').aggregate([//选择数据表,就是集合 {$unwind:"$unknowwords"},//选定要查询的内嵌数组 {$match:{"unknowwords.word":'red'}},//指定查询条件,这里是内嵌数组中的word字段等于abcde {$project:{"unknowwords.word":1,'_id':0}},//需要返回的字段,这里关闭了_id的返回 {$limit:3}//定义返回的数据数量 ]).toArray(function(err,data){ console.log(data);//打印到控制台 db.close() //关闭数据库 }) })
//db.晨曦与晚霞之间.find({'finalWords.word':{$eq:'sri'}},{'finalWords.$':1})
//db.guest.aggregate([{$unwind:’$finalWords’},{$match:{‘finalWords.status’:1,chapter:’test’}},{$project:{‘finalWords.word’:1,’_id’:0,’finalWords.desc’:1}}])//这个多了一个chapter的过滤条件,只返回一个文章的内容
//db.guest.aggregate([{$unwind:’$finalWords’},{$match:{‘finalWords.status’:1}},{$project:{‘finalWords.word’:1,’_id’:0,’finalWords.desc’:1}}])//这个没有chapter的过滤条件,返回了当前集合下所有符合条件的数据
//db.guest.aggregate([{$unwind:’$finalWords’},{$match:{‘finalWords.status’:1}},{$project:{‘finalWords.word’:1,’_id’:0,’finalWords.desc’:1}},{$limit:3}])//这个没有chapter的过滤条件,但是指定了返回的条目数量,所以只返回了3条数据
//获取过滤出的内嵌数组的数量
//db.guest.aggregate([{$unwind:'$finalWords'},{$match:{'finalWords.status':1,chapter:'test'}},{$project:{'finalWords.word':1,'_id':0,'finalWords.desc':1}}])//这个多了一个chapter的过滤条件,只返回一个文章的内容 db.guest.aggregate([ { $unwind:'$finalWords'//要操作的内嵌数组 },{ $match:{'finalWords.status':1,chapter:'test'}//过滤条件,这个指定了匹配的反问是章节名称为test的 },{ $project:{'finalWords.word':1,'_id':0,'finalWords.desc':1}}//需要返回的数据 ]) //db.guest.aggregate([{$unwind:'$finalWords'},{$match:{'finalWords.status':1}},{$project:{'finalWords.word':1,'_id':0,'finalWords.desc':1}}])//这个没有chapter的过滤条件,返回了当前集合下所有符合条件的数据 db.guest.aggregate([ {$unwind:'$finalWords'},//要操作的内嵌数组 {$match:{'finalWords.status':1}},//要过滤的条件,这个条件的范围是所有文档 {$project:{'finalWords.word':1,'_id':0,'finalWords.desc':1}}//要返回的数据 ]) //db.guest.aggregate([{$unwind:'$finalWords'},{$match:{'finalWords.status':1}},{$project:{'finalWords.word':1,'_id':0,'finalWords.desc':1}},{$limit:3}])//这个没有chapter的过滤条件,但是指定了返回的条目数量,所以只返回了3条数据 db.guest.aggregate([ {$unwind:'$finalWords'},//要操作的内嵌数组 {$match:{'finalWords.status':1}},//要过滤的条件,这个条件的范围默认是所有文档 {$project:{'finalWords.word':1,'_id':0,'finalWords.desc':1}},//要返回的数据 {$limit:3}//设定要返回多少条数据 ]) db.guest.aggregate([ {$unwind:'$finalWords'}, {$match:{'finalWords.status':1,chapter:'test'}}, {$project:{"_id":0,"mini":{"$min":"$finalWords.status"},"count":{"$sum":"$finalWords.status"}}}]) //db.guest.aggregate([{'$match':{"chapter":'sanvtions'}},{'$project':{"_id":0,"mini":{"$min":"$finalWords.status"},"count":{"$sum":"$finalWords.status"}}}]) db.guest.aggregate([ {'$match':{"chapter":'sanvtions'}}, {'$project':{"_id":0,"mini":{"$min":"$finalWords.status"},"count":{"$sum":"$finalWords.status"}}}])//project可以返回数据,这些数据可以使用如$sum函数做处理。 //把$max换成其他如:sum、avg、min。可实现求和、平均、最小值功能 db.guest.aggregate({"$group":{_id: 'max',max_value:{"$avg":"$finalWords.status"}}}); db.guest.find({'finalWords.word':{$eq:'sri'}},{'finalWords.$':1}) db.guest.find({'finalWords.word':{$ne:'11a444'}},{'finalWords.$':1}) db.guest.find({chapter:'test','finalWords':{$elemMatch:{'word':{$ne:'11a444'}}}},{'_id':0,'finalWords.$':1}).count() db.guest.find({chapter:'test',"finalWords":{$elemMatch:{"word":{$ne:'a'}}}},{"finalWords.$":1,"_id":0})