标签: mongodb-java

MongoDB点表示法查询

我有一个BasicDBObject调试时似乎持有:

{ "_id" : { "p_key" : { "$date" : "2012-02-02T00:00:00Z"} , "d_key" : 222} , "t_key" : 10195 , "w_key" : 4 , "f_key" : { "$date" : "2012-02-02T00:00:00Z"}}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试:

dbObject.get("_id.d_key"));
Run Code Online (Sandbox Code Playgroud)

我得到一个空指针异常.

对我在这里做错了什么的想法?

我试图获得d_key内部的价值_id.

mongodb mongodb-java

2
推荐指数
1
解决办法
1314
查看次数

在mongodb中实现具有总页面的嵌入式分页

我查看了一个与我的嵌入式分页情况相关的旧问题.尽管带有切片的嵌入式分页工作正常,但总页面解决方案仍然缺失,我想知道是否有可能在服务器端获得注释的总大小.

有没有办法查询或统计服务器上的嵌入式阵列的大小,而无需将整个文档提取到我的应用程序并手动计数?

我不介意为此做2个查询,1个用于分页评论,1个用于获取评论总数.如果我可以在一个查询中执行此操作,那将是惊人的.

顺便说一下,我正在使用java驱动程序和spring-data mongodb.

请分享你的想法.谢谢 !

mongodb mongodb-java spring-data

2
推荐指数
1
解决办法
1190
查看次数

Java驱动程序等效于JavaScript shell的Object.bsonsize(doc)?

我想知道Java驱动程序相当于Mongo JavaScript shell的Object.bsonsize(doc)方法是什么?例如,执行以下操作的Java代码是什么:

bobk-mbp:~ bobk$ mongo
MongoDB shell version: 2.0.4
connecting to: test
PRIMARY> use devices;
switched to db devices
PRIMARY> Object.bsonsize( db.profiles.findOne( { _id: "REK_0001" } ) );
186
PRIMARY> Object.bsonsize( db.profiles.findOne( { _id: "REK_0002" } ) );
218
PRIMARY> 
Run Code Online (Sandbox Code Playgroud)

如何使用MongoDB Java驱动程序执行相同的基本用例.通过JavaDocs并不明显.

mongodb mongodb-java

2
推荐指数
1
解决办法
1847
查看次数

mongodb导致的特定字段

我是mongodb的新手.我需要知道如何从集合中的文档中单独检索一个paricular字段.

例如:

db.things.findOne({name:"mongo"});
Run Code Online (Sandbox Code Playgroud)

结果:

{"_id" : "497dab624ee47b3a675d2d9c" , "name" : "mongo" , "type" : "database"}
Run Code Online (Sandbox Code Playgroud)

但结果我只需要输入字段.如何在查询查询中指定它?

mongodb mongodb-java

2
推荐指数
1
解决办法
158
查看次数

使用Morphia手动转换第三方类别

长话短说:是否可以使用Morphia为第三方库类编写类型转换器?

长话:我是Morphia的新手.我有一个实体类,其中包含一个字段类型为javax.activation.MimeType.当我尝试保存我的类的实例时,Morphia抱怨它"无法序列化类javax.activation.MimeType".我尝试编写TypeConverter并将其添加到转换器列表中但它不起作用.以下是代码段:

Entity.class

@Entity
@Converters(MimeTypeConverter.class)
public class Entity {
    @Id ObjectId id;
    String name;
    javax.activation.MimeType mimeType;
}
Run Code Online (Sandbox Code Playgroud)

MimeTypeConverter.class

public class MimeTypeConverter extends TypeConverter {

    @Override
    public Object decode(Class targetClass, 
                         Object fromDBObject, 
                         MappedField optionalExtraInfo) {
        MimeType mimetype;

        BasicDBObject dbObject = (BasicDBObject) fromDBObject;
        String mimeString = dbObject.getString("mimeType");
        try{
            mimetype = new MimeType(mimeString);
        } catch(MimeTypeParseException ex){
            mimetype = new MimeType();
        }

        return mimetype;
    }

    @Override
    public Object encode(Object value, MappedField optionalExtraInfo) {
        MimeType mimetype = (MimeType) value;
        return mimetype.getBaseType();
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

morphia mongodb-java

2
推荐指数
1
解决办法
3161
查看次数

使用MongoDB Java Driver以编程方式设置分片键

从MongoDB Java驱动程序版本2.10.1设置分片键的语法是什么?

换句话说,我如何使用Java驱动程序执行此操作?

sh.shardCollection("test.a", {"_id": "hashed"}})
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-java

2
推荐指数
1
解决办法
2516
查看次数

限制Result中的字段

我正在使用MongoDB v3.0.1和MongoDB Java Driver 3.0.0-RC1.

我有一个用户集合,其中包含"username","firstname","lastname","email"等字段.

现在我想选择所有用户,但只选择"username","firstname"和"lastname"字段.

在Mongo-Shell上,它正在与之合作 db.user.find({}, { "username" : true , "firstname" : true , "lastname" : true})

但是我怎么能用Java做呢?我试过了 final BasicDBObject query = new BasicDBObject("{}", new BasicDBObject("_id", true)); final MongoCursor<Document> usersCursor = col.find(query)

为此,我得到一个空的结果,因为它被翻译为{ "{}" : { "_id" : true , "firstname" : true , "lastname" : true}}.

我也尝试过使用BasicDBList,但是不接受这个 col.find()

使用"旧"Mongo 2.x驱动程序 new BasicDBObject(BasicDBObject(), new BasicDBObject("username", true).append("firstname", true).append("lastname", true)

是否有可能这样做或者我是否必须获取所有字段?

问候
Sören

java mongodb mongodb-java

2
推荐指数
1
解决办法
2345
查看次数

在Eclipse中从MongoDB禁用控制台日志记录

我正在使用Mongo数据库存储Java程序中的信息。我正在使用Eclipse和MongoDB 3.0,我遇到的问题是,只要我的程序与Mongo有任何交互,它就会用JULLogger中的红色文本填充控制台。

我目前没有任何代码可以设置记录器级别,因为我在此处或在线其他地方找到的所有示例都给出了错误:

    Logger mongoLogger = Logger.getLogger( "org.mongodb.driver" );
    mongoLogger.setLevel(Level.SEVERE); 

   "The method getLogger(String) is undefined for the type Logger"
Run Code Online (Sandbox Code Playgroud)

这是输出:

    Dec 16, 2015 8:49:58 AM com.mongodb.diagnostics.logging.JULLogger log
    INFO: Cluster created with settings {hosts=[127.0.0.1:27017],     
    mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
    Dec 16, 2015 8:49:58 AM com.mongodb.diagnostics.logging.JULLogger log
    INFO: No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description  
    ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, all=[ServerDescription{address=127.0.0.1:27017, 
    type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out
    Dec 16, 2015 8:49:58 AM com.mongodb.diagnostics.logging.JULLogger log
    INFO: Opened connection [connectionId{localValue:1, serverValue:117}] to 127.0.0.1:27017 …
Run Code Online (Sandbox Code Playgroud)

java eclipse logging mongodb mongodb-java

2
推荐指数
1
解决办法
2913
查看次数

如何使用 Java 从 MongoDB 读取日期(时间戳)

我正在尝试以以下格式从 MongoDB 读取日期字段

Formate: YYYY-MM-dd HH:mm:ss.SSSSSS

2017-01-23-10.46.07.812000 - DB2
2017-01-23T16:46:07.812Z   - Stored in MongoDB (While viewing from GUI tool)
Mon Jan 23 22:16:07 IST 2017 - Result/Reading from MongoDB

// Formatter for the input date
final DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy");
final ZonedDateTime dateFiledParsed = ZonedDateTime.parse(dateFiled.toString(), inputFormat);
final DateTimeFormatter outputFormat3 = DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss.SSSSSS");
System.out.println(outputFormat3.format(publicationDateParsed));

Result: 2017-01-23 22:16:07.000000
Run Code Online (Sandbox Code Playgroud)

结果是 2017-01-23 22:16:07。000 000,而不是000它应该是812(原始值:2017-01-23-10.46.07.812000)

注意:使用 MongoDB Java 驱动程序 3.4。

先感谢您!

婆罗提

java mongodb mongodb-java mongodb-java-3.3.0

2
推荐指数
1
解决办法
7818
查看次数

MongoDB 从嵌套文档中读取

我有一个包含嵌套文档的文档,我认为根据过滤器,我可以指定诸如 data.sms.mobileNumber 之类的内容。然而这行不通。

我将如何使用标准 Document getString 请求读取 data.sms.mobileNumber 字段中的数据?

示例文档:

{ "_id" : ObjectId("59b850bd81bacd0013d15085"), "data" : { "sms" : { "message" : "Your SMS Code is ABCDEFG", "mobileNumber" : "+447833477560" } }, "id" : "b0a3886d69fc7319dbb4f4cc21a6039b422810cd875956bfd681095aa65f6245" }
Run Code Online (Sandbox Code Playgroud)

示例字段获取字符串请求:

document.getString("data.sms.message")
Run Code Online (Sandbox Code Playgroud)

java mongodb mongodb-java

2
推荐指数
1
解决办法
2094
查看次数