当我启动配置服务器时,我可以在记录器中看到以下行:
[websvr] admin web console waiting for connections on port 27017
Run Code Online (Sandbox Code Playgroud)
所以,我想知道mongo是否使用Web服务器来维护配置数据?
我有一个文档中MongoDB的
name: name
date_created: date
p_vars: {
01: {
a: a,
b: b,
}
02: {
a: a,
b: b,
}
....
}
Run Code Online (Sandbox Code Playgroud)
表示为 DBObject
key,value对都是类型String DBObjectas as JSONfile?我有一个JUnit rule称为MongoRule样子
public class MongoRule extends ExternalResource {
private static final Logger LOGGER = LoggerFactory.getLogger(MongoRule.class);
private final MongoService mongoService;
public MongoRule() throws UnknownHostException {
mongoService = new MongoService(getConfiguredHost(), getConfiguredPort(), getConfiguredDatabase());
}
@Override
protected void before() throws Throwable {
LOGGER.info(" Setting up Mongo Database - " + getConfiguredDatabase());
}
@Override
protected void after() {
LOGGER.info("Shutting down the Mongo Database - " + getConfiguredDatabase());
mongoService.getMongo().dropDatabase(getConfiguredDatabase());
}
@Nonnull
public DB getDatabase() {
return mongoService.getMongo().getDB(getConfiguredDatabase());
}
@Nonnull
public Mongo getMongo() …Run Code Online (Sandbox Code Playgroud) 我有一个集合,其中有一个数组类型的字段。我想根据子数组的字段进行排序,但 Mongo 没有对数据进行排序。
我的收藏是:
{
"_id" : ObjectId("51f1fcc08188d3117c6da351"),
"cust_id" : "abc123",
"ord_date" : ISODate("2012-10-03T18:30:00Z"),
"status" : "A",
"price" : 25,
"items" : [{
"sku" : "ggg",
"qty" : 7,
"price" : 2.5
}, {
"sku" : "ppp",
"qty" : 5,
"price" : 2.5
}]
}
Run Code Online (Sandbox Code Playgroud)
我的查询是:
db.orders.aggregate([
{ "$unwind" : "$items"} ,
{ "$match" : { }} ,
{ "$group" : { "items" : { "$addToSet" : { "sku" : "$items.sku"}} , "_id" : { }}} ,
{ "$sort" : …Run Code Online (Sandbox Code Playgroud) 我在mongodb中存储了一些数字.例如
我想查找文件,例如,如果我传递'7',查询应检查7是否位于num1和num2之间,并且必须返回此文档.
我试过了
BasicDBObject query = new BasicDBObject("num1", new BasicDBObject("gte", 7).append("num2",new BasicDBObject("lte", 7)));
Run Code Online (Sandbox Code Playgroud)
和
List<BasicDBObject> obj = new ArrayList<BasicDBObject>();
obj.add(new BasicDBObject("num1", new BasicDBObject("gte", 7)));
obj.add(new BasicDBObject("num2", new BasicDBObject("lte", 7)));
query.put("$and", obj);
Run Code Online (Sandbox Code Playgroud)
两个都没有给我任何结果.你能否告诉我正确的查询目的?
mongoDB $geoWithin和$geoIntersects运营商有什么区别?
如果我找坐标(使用默认坐标参照系),$geoWithin以及$geoIntersects将返回相同的结果.
如果我错了,请纠正我.
任何简单的用例来理解差异将不胜感激.
我正在使用 MongoDB Atlas,最近我开始在我的 MongoDB 副本上收到此错误:
不允许用户对 [mydb.system.indexes] 执行操作 [find]
什么都没有真正改变,所以我想知道可能是什么问题。用户在文档中拥有readWrite角色,看起来它应该有权这样做。另外,我尝试将用户更改为具有任何权限的管理员用户,但仍然出现此错误。有趣的是,集合不存在于但 Spring Data 尝试查询它并收到此错误。mydbsystemmydb
这是来自 mongo 的完整日志:
Error: error: {
"ok" : 0,
"errmsg" : "user is not allowed to do action [find] on [mydb.system.indexes]",
"code" : 8000,
"codeName" : "AtlasError"
}
Run Code Online (Sandbox Code Playgroud)
MongoDB 连接 URI 如下所示:
spring.data.mongodb.uri=mongodb+srv://[USER]:[PASSWORD]@[MONGO_URL].mongodb.net/mydb
Run Code Online (Sandbox Code Playgroud)
我正在将 Spring Boot2.0.1.RELEASE与版本的 mongo java 驱动程序一起使用3.6.3。Mongo 副本的版本是3.4.14. 知道发生了什么以及如何解决这个问题吗?升级用户角色在这里没有帮助。
mongodb mongo-java spring-data-mongodb mongo-java-driver mongodb-atlas
我想获得不存在字段下载的所有文档
find{ "download" : {$exists: false}}
Run Code Online (Sandbox Code Playgroud)
对于Java,我找到了一个例子:
BasicDBObject neQuery = new BasicDBObject();
neQuery.put("number", new BasicDBObject("$ne", 4));
DBCursor cursor = collection.find(neQuery);
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
Run Code Online (Sandbox Code Playgroud)
我的改编是
BasicDBObject field = new BasicDBObject();
field.put("entities.media", 1);
field.put("download", new BasicDBObject("$exists",false));
System.out.println("Start Find");
DBCursor cursor = collection.find(query,field);
System.out.println("End Find Start Loop ALL 100k");
int i = 1;
while(cursor.hasNext())
Run Code Online (Sandbox Code Playgroud)
存在线不起作用:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: com.mongodb.MongoException: Unsupported projection option: $exists
at com.mongodb.MongoException.parse(MongoException.java:82)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:314) …Run Code Online (Sandbox Code Playgroud) 我收集了以下数据:
{
"_id" : ObjectId("51f1fcc08188d3117c6da351"),
"cust_id" : "abc123",
"ord_date" : ISODate("2012-10-03T18:30:00Z"),
"status" : "A",
"price" : 25,
"items" : [{
"sku" : "ggg",
"qty" : 7,
"price" : 2.5
}, {
"sku" : "ppp",
"qty" : 5,
"price" : 2.5
}]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用查询:
cmd { "aggregate" : "orders" , "pipeline" : [
{ "$unwind" : "$items"} ,
{ "$match" : { "items" : { "$elemMatch" : { "qty" : { "$in" : [ 7]}}}}} ,
{ "$group" : { "price" …Run Code Online (Sandbox Code Playgroud) 如何更改mongo连接池大小?
我看到默认是100。有没有办法改变这个值?
我不想通过 spring 来做,有没有办法通过 MongoClient 配置它?
我看到有一个关于 mongoClientOptions 的选项,但我没有看到设置连接池的选项
mongo-java ×10
mongodb ×10
java ×4
bson ×1
geospatial ×1
json ×1
mongoid ×1
mongoose ×1
spring ×1
spring-mongo ×1