2013年(92)
分类: 信息化
2013-05-20 05:35:46
我感触在运用库的时分运用的最多的是查询,所以学好了查询,我们将来做开发的时分会很顺手,很简单。相同mongodb供应了健壮的查询功用,我在这里尽量的详细的讲了解这些查血,如果哪里差错还请大虾指出。 查找某集结全部文档 在mongodb中查询运用find方法,运用方法是db.集结名.find({}),find方法的参数是一个json方针,更得当说是bson方针,可是如果有人说json方针的话你了解了 就可以了。我们运用find方法的时分,如果没有传递参数那便是传递的一个空json,也便是查询集结中的全部文档。如下: > db.user.find() { "_id" : ObjectId("5198c286c686eb50e2c843b2"), "name" : "user0", "age" : 0 } { "_id" : ObjectId("5198c286c686eb50e2c843b3"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("5198c286c686eb50e2c843b4"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("5198c286c686eb50e2c843b5"), "name" : "user3", "age" : 3 } { "_id" : ObjectId("5198c286c686eb50e2c843b6"), "name" : "user4", "age" : 4 } { "_id" : ObjectId("5198c286c686eb50e2c843b7"), "name" : "user5", "age" : 5 } { "_id" : ObjectId("5198c286c686eb50e2c843b8"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5198c286c686eb50e2c843b9"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5198c286c686eb50e2c843ba"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("5198c286c686eb50e2c843bb"), "name" : "user9", "age" : 9 } { "_id" : ObjectId("5198c286c686eb50e2c843bc"), "name" : "user10", "age" : 10 } { "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "name" : "user0", "age" : 20 } 条件查询 已然find有参数那我们就可以给其传递参数,如下我们查询name为user0的文档: > db.user.find({name:"user0"}) { "_id" : ObjectId("5198c286c686eb50e2c843b2"), "name" : "user0", "age" : 0 } { "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "name" : "user0", "age" : 20 } 回来文档的某些值 这里我们找到了name为user0的文档,可是有时分我们只想获得这个文档的某几个值,这时分我们就可以给find传第二个参数,这里的参数同第一个相同都是json。我们只想获得age的值,可以如下编写: > db.user.find({name:"user0"},{age:1}) { "_id" : ObjectId("5198c286c686eb50e2c843b2"), "age" : 0 } { "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "age" : 20 } 不让文档闪现某些值 看上面的代码我们给age设置为1,标明我们需要得到age的值,如果我们不想要age的值,我们可以将其设置为0。相同true、false和1、0在这里效果相同,还有一点在mongodb这个当地运用的数字非0就代表真,可是不建议运用其他的数字,我们可以运用如下的方法去掉age的值: > db.user.find({name:"user0"},{age:0}) { "_id" : ObjectId("5198c286c686eb50e2c843b2"), "name" : "user0" } { "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "name" : "user0" } 条件表达式 在mongodb中可以运用条件表达式, <=,>=,这里没有=,因为向上面那样的查询便是=的效果,前面的字符对应mongodb中的方法为$.lt,$.gt,$lte,$gte。 我们查询年岁大于5的用户,如下: > db.user.find({age:{$gt:5}}) { "_id" : ObjectId("5198c286c686eb50e2c843b8"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5198c286c686eb50e2c843b9"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5198c286c686eb50e2c843ba"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("5198c286c686eb50e2c843bb"), "name" : "user9", "age" : 9 } { "_id" : ObjectId("5198c286c686eb50e2c843bc"), "name" : "user10", "age" : 10 } { "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "name" : "user0", "age" : 20 }查找年岁大于等于5的用户,如下: > db.user.find({age:{$gte:5}}) { "_id" : ObjectId("5198c286c686eb50e2c843b7"), "name" : "user5", "age" : 5 } { "_id" : ObjectId("5198c286c686eb50e2c843b8"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5198c286c686eb50e2c843b9"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5198c286c686eb50e2c843ba"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("5198c286c686eb50e2c843bb"), "name" : "user9", "age" : 9 } { "_id" : ObjectId("5198c286c686eb50e2c843bc"), "name" : "user10", "age" : 10 } { "_id" : ObjectId("5198c3cac686eb50e2c843bd"), "name" : "user0", "age" : 20 }相同$gt/$.gte跟上面的运用方法相同。 limit束缚回来的文档的数量 在这里介绍一下limit方法,这个方法是束缚回来的文档的数量。运用如下: > db.user.find({age:{$gte:5}}).limit(3) { "_id" : ObjectId("5198c286c686eb50e2c843b7"), "name" : "user5", "age" : 5 } { "_id" : ObjectId("5198c286c686eb50e2c843b8"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5198c286c686eb50e2c843b9"), "name" : "user7", "age" : 7 }与上面的比较只闪现了三条数据。