当前位置:首页>正文

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

2023-04-20 06:38:38 互联网 未知

高手帮帮忙,我刚接触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 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 datas=new ArrayList()
// for(int i=0i<10i ){
// 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 map=new HashMap()
// 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=// print("find:" coll.find(new BasicDBObject("age", 1)).toArray())
//查询age<=// print("find: " coll.find(new BasicDBObject("age", new BasicDBObject("$lte", 1))).toArray())
//查询age>=// print("fint: " coll.find(new BasicDBObject("age", new BasicDBObject("$gte", 1))).toArray())
//查询age!=// print("fint: " coll.find(new BasicDBObject("age", new BasicDBObject("$ne", 1))).toArray())
//查询age=1,2,// print("fint: " coll.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.IN ,new int[]{1,2,3}))).toArray())
//查询age!=1,2,// 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 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 list=new ArrayList()
// 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// 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数据库怎么样查询数据库的数据的总数量

db.user.find().count() ==> 这个快是因为 _id作为主键是一个相对小的索引 而对应的mysql里是走的全表扫描 如果你设计的表结构很满足范式,那么其实并不是MongoDB所擅长的场景

mongoTemplate怎么写多条件查询mongoDB中的数据

Criteria criteria = new Criteria().andOperator(
Criteria.where("createDate").gte(dateFormat.parseObject("2014-10-01 00:00:00")),
Criteria.where("createDate").lt(dateFormat.parseObject("2014-11-01 00:00:00"))
)
mongoTemplate.group(criteria, "collectionName", new GroupBy("GroupField"), entityClass)


org.mongodb
mongo-java-driver
2.12.3

mongodb 查询数组内符合条件的值

{"list":
[{"num":1, "name":"a"},
{"num":2, "name":"b"},
{"num":7, "name":"c"},
{"num":3, "name":"c"},
{"num":4, "name":"c" }]}

这样就可以查询出来你要的结果

mongodb 怎么进行批量查询

Statement stmt = a.createStatement()
ResultSet rs = stmt.executeQuery(sql)
for(int i = 1 i < 10000 i ){
//read data from rs
}
MongoDB的查询是这样的,你用Cursur去查询,如果没有设置batch size这个参数,那么MongoDB默认会返回101条数据,等到这101条数据读完了,也就是说用户想读第102条数据,那么驱动会再次去MongoDB中获取后面的一批数据,这批数据不是以个数记的,而是最大限制4M的大小,将这4M的数据返回供用户继续读,读完再申请4M。当然,你可以通过batch size来改变这一数值,如果设置了,那么每次返回都会返回batch size条数据。

mongoDB在java中怎么根据内嵌文档条件查询

建立SimpleTest.java,完成简单的mongoDB数据库操作 Mongo mongo = new Mongo() 这样就创建了一个MongoDB的数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017。 DB db = mongo.getDB(“test”) 这样就获得了一个test的数据库,如果mongoDB中没有创建这个数据库也是可以正常运行的。如果你读过上一篇文章就知道,mongoDB可以在没有创建这个数据库的情况下,完成数据的添加操作。当添加的时候,没有这个库,mongoDB会自动创建当前数据库。 得到了db,下一步我们要获取一个“聚集集合DBCollection”,通过db对象的getCollection方法来完成。 DBCollection users = db.getCollection("users") 这样就获得了一个DBCollection,它相当于我们数据库的“表”。 查询所有数据 DBCursor cur = users.find() while (cur.hasNext()) { System.out.println(cur.next()) } 完整源码 package com.hoo.test import java.net.UnknownHostException import com.mongodb.DB import com.mongodb.DBCollection import com.mongodb.DBCursor import com.mongodb.Mongo import com.mongodb.MongoException impor... 建立SimpleTest.java,完成简单的mongoDB数据库操作

Mongo mongo = new Mongo()

这样就创建了一个MongoDB的数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017。

DB db = mongo.getDB(“test”)

这样就获得了一个test的数据库,如果mongoDB中没有创建这个数据库也是可以正常运行的。如果你读过上一篇文章就知道,mongoDB可以在没有创建这个数据库的情况下,完成数据的添加操作。当添加的时候,没有这个库,mongoDB会自动创建当前数据库。

得到了db,下一步我们要获取一个“聚集集合DBCollection”,通过db对象的getCollection方法来完成。

DBCollection users = db.getCollection("users")

这样就获得了一个DBCollection,它相当于我们数据库的“表”。

查询所有数据

DBCursor cur = users.find()

while (cur.hasNext()) {

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

}

完整源码
package com.hoo.test

import java.net.UnknownHostException
import com.mongodb.DB
import com.mongodb.DBCollection
import com.mongodb.DBCursor
import com.mongodb.Mongo
import com.mongodb.MongoException
import com.mongodb.util.JSON

/**
* function:MongoDB 简单示例
* @author hoojo
* @createDate 2011-5-24 下午02:42:2* @file SimpleTest.java
* @package com.hoo.test
* @project MongoDB
* @blog http
* @email hoojo_@126.com
* @version 1.0
*/
public class SimpleTest {

public static void main(String[] args) throws UnknownHostException, MongoException {
Mongo mg = new Mongo()
//查询所有的Database
for (String name : mg.getDatabaseNames()) {
System.out.println("dbName: " name)
}

DB db = mg.getDB("test")
//查询所有的聚集集合
for (String name : db.getCollectionNames()) {
System.out.println("collectionName: " name)
}

DBCollection users = db.getCollection("users")

//查询所有的数据
DBCursor cur = users.find()
while (cur.hasNext()) {
System.out.println(cur.next())
}
System.out.println(cur.count())
System.out.println(cur.getCursorId())
System.out.println(JSON.serialize(cur))
}

如何用mongoose直接查询数据中的数量

如何用mongoose直接查询数据中的数量
openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为:
Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 3276Context.MODE_WORLD_READABLE = Context.MODE_WORLD_WRITEABLE = Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。

如何mongoDB以数组中某元素的值的范围为条件查询

mongodb中使用aggregate可以返回数组字段数组的指定索引的元素
参考语句:
{$match:{duid:15}},
{$project:{duid:1,"default":1}},
{$unwind:"$default.styles"},
{$match:{default.styles.status:1}},
{$group:{_id:"$_id","defaults":{$push:"$default.styles"}}}
解释:
1:过滤数据{$match:{duid:15}}
2:获取想要的列{$project:{duid:1,"default":1}}
3:获取展开后数组字段{$unwind:"$default.styles"}
4:条件查询数组元素{$match:{default.styles.status:1}}
5:分组后保存结果{$group:{_id:"$_id","defaults":{$push:"$default.styles"}}}
数据结构如下:
{
"_id" : ObjectId("55dad346ea23e7c11beefce5"),
"duid" : 11.0,
"default" : {
"style" : "普通会诊",
"alias" : "",
"money" : "0",
"styles" : [{
"code" : 1,
"style" : "普通会诊",
"alias" : "一般会诊",
"money" : 100,
"status" : 1,
"remark" : "需要患者亲自来到医院"
} {
"code" : 6,
"style" : "夜间门诊",
"alias" : "夜间门诊",
"money" : 100,
"status" : 0,
"remark" : "夜间门诊"
}, {
"code" : 7,
"style" : "其他门诊",
"alias" : "其他门诊",
"money" : 10,
"status" : 0,
"remark" : "其他门诊"
}]
}
}

相关文章