1. 首页 > 科技

mongodb 如何查询这个需求 mongodb查询语句

mongodb 如何查询这个需求mongodb查询语句

高手帮帮忙,我刚接触mongodb,怎么用java对mongodb数据库进行多条件查询,先谢谢了

package maven.demo.test;

import java.util.ArrayList;

import java.util.List;

import com.mongodb.BasicDBObject;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.DBObject;

import com.mongodb.Mongo;

import com.mongodb.QueryOperators;

public class MongoDB {

private static void print(String str){

System.out.println(str);

}

public static void main(String[] args) {

try {

//创建连接

Mongo m=new Mongo("127.0.0.1", 27017);

//得到数据库

DB db=m.getDB("test");

//得到所有数据库

//List<String> colls=m.getDatabaseNames();

//for(String str:colls){

//System.out.println(str);

//}

////得到所有的集合(表)

//for(String collection:db.getCollectionNames()){

//System.out.println(collection);

//}

//删除一个数据库

//m.dropDatabase("sun");

//得到sun表

DBCollection coll=db.getCollection("things");

//查看一个表的索引

//for(DBObject index:coll.getIndexInfo()){

//System.out.println(index);

//}

//DBObject myDoc=coll.findOne();

//System.out.println(myDoc);

//添加

//BasicDBObject doc=new BasicDBObject();

//doc.put("name", "sunshan");

//doc.put("sex", "男");

//doc.put("age", 22);

//coll.insert(doc);

//删除

//coll.remove(doc);

//BasicDBObject doc1=new BasicDBObject();

//doc1.put("i", 0);

//doc1.put("j", "foo");

//BasicDBObject doc2=new BasicDBObject();

//doc2.put("hello", "world");

//doc1.put("doc2", doc2);

//coll.insert(doc1);

//修改

//BasicDBObject doc3=new BasicDBObject();

//doc3.put("x", 6);

//BasicDBObject doc4=new BasicDBObject();

//doc4.put("x", 1);

//coll.update(doc3, doc4,true,false);

//如果数据库不存在就添加 |多条修改 false只修改第一天,true如果有多条就不修改

//条件查询

//System.out.println(coll.find(doc4));

//coll.findAndRemove(doc4);

////批量插入

//List<DBObject> datas=new ArrayList<DBObject>();

//for(int i=0;i<10;i++){

//BasicDBObject bd=new BasicDBObject();

//bd.put("name", "data");

//bd.append("age", i);

//datas.add(bd);

//}

//coll.insert(datas);

//添加

// BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilder.start();

//documentBuilder.add("database", "mkyongDB");

//documentBuilder.add("table", "hosting");

//BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder.start();

//documentBuilderDetail.add("records", "99");

//documentBuilderDetail.add("index", "vps_index1");

//documentBuilderDetail.add("active", "true");

//documentBuilder.add("detail", documentBuilderDetail.get());

//coll.insert(documentBuilder.get());

//添加

//Map<Object,Object> map=new HashMap<Object,Object>();

//map.put("a", 1);

//map.put("b", "b");

//coll.insert(new BasicDBObject(map));

//添加

//String json ="{'1' : '1','2' : '2',"+"'11' : {'1' : 1, '2' : '2', '3' : '3'}}";

//DBObject dbobject=(DBObject)JSON.parse(json);

//coll.insert(dbobject);

//更新

//BasicDBObject bdo=new BasicDBObject();

//bdo.put("x", 11);

//coll.update(new BasicDBObject().append("x", 0), bdo);

//更新

//BasicDBObject bdo=new BasicDBObject().append("$inc", new BasicDBObject().append("x", 12));

//coll.update(new BasicDBObject().append("x", 11), bdo);

//更新

//如果不使用$set 直接是 age则所有的都会更新

//根据age为9条件把name:data修改为 name:sun

//BasicDBObject bdo=new BasicDBObject().append("$set", new BasicDBObject().append("name", "sunshan"));

//coll.update(new BasicDBObject().append("age", 9), bdo);

//更新

//根据name为data条件把age:批量修改为 age:age

//BasicDBObject bdo=new BasicDBObject().append("$set", new BasicDBObject().append("age", "age"));

//coll.update(new BasicDBObject().append("name", "data"), bdo,false, true);

//查询age=1

//print("find:"+coll.find(new BasicDBObject("age", 1)).toArray());

//查询age<=1

//print("find: "+coll.find(new BasicDBObject("age", new BasicDBObject("$lte", 1))).toArray());

//查询age>=1

//print("fint: "+coll.find(new BasicDBObject("age", new BasicDBObject("$gte", 1))).toArray());

//查询age!=1

// print("fint: "+coll.find(new BasicDBObject("age", new BasicDBObject("$ne", 1))).toArray());

//查询age=1,2,3

//print("fint: "+coll.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.IN ,new int[]{1,2,3}))).toArray());

//查询age!=1,2,3

//print("find: "+coll.find(new BasicDBObject("age" ,new BasicDBObject(QueryOperators.NIN ,new int[]{1,2,3}))).toArray());

//print("find: "+coll.find(new BasicDBObject("age" ,new BasicDBObject(QueryOperators.EXISTS ,true))).toArray());

//查询age属性

//print("find: "+coll.find(null ,new BasicDBObject("age" ,true)).toArray());

//List<DBObject> list=coll.find().toArray();

//for(Object obj:list){

//System.out.println(obj);

//}

//true查询出来存在的 /false 查询出来不存在的

//print(""+coll.find(new BasicDBObject("y",new BasicDBObject(QueryOperators.EXISTS,false))).toArray());

//DBObject dbc=new BasicDBObject();

//dbc.put("name", 1111);

//List<DBObject> list=new ArrayList<DBObject>();

//list.add(dbc);

//System.out.println(coll.insert(list).getN());

////查询部分数据块

//DBCursor cursor=coll.find().skip(1);

//while(cursor.hasNext()){

//System.out.println(cursor.next());

//}

//DBCursor cur=coll.find(); //DBCursor cur=coll.find().limit(2);

//while(cur.hasNext()){

//System.out.println(cur.next());

//}

//System.out.println(cur.getCursorId()+" "+cur.count()+" "+JSON.serialize(cur));

//条件查询

BasicDBObject doc5=new BasicDBObject();

doc5.put("$gt", 1);

doc5.put("$lt", 3);

print("find 21<y<23:"+coll.find(new BasicDBObject("y", doc5)).toArray());

//BasicDBObject doc5=new BasicDBObject();

//doc5.put("$gt", 1);

//doc5.put("$lt", 3);

//BasicDBObject doc6=new BasicDBObject();

//doc6.put("x", doc5);

//System.out.println(coll.find(doc6));

} catch (Exception e) {

e.printStackTrace();

}

}

}

mongodb 按照条件查询,如何把这条查询出来的记录里的字段如email的值提取出来,保存为String类型

String email = "";

if(myDoc.containsField("email")){

Object email_ = myDoc.get("email");

if(email_ instanceof String){

email = (String)email_ ;

}else {

email = email_.toString();

}

}

MongoDB里面怎么 查最值

db.collectionName.find({},{"_id":1}).sort({"_id":-1}).limit(1);

mongodb 带点的列名查询

mongodb中使用aggregate可以返回数组字段数组的指定索引的元素

参考语句:

{$project:{"blog1":1}},

{$unwind:"$blog1"},

{$match:{'blog1.uidd':666}},

{$group:{_id:"$_id","blog":{$push:"$blog1"}}}

{$project:{"$text":1}},