标签: mongodb-java

在获取时对集合中的文档进行排序

我有一个名为resource的MongoDB集合.它有以下文件:

{ "_id" : "Abb.e", "_class" : "Resource", "resourceEmail" : "test1@test.com" }
{ "_id" : "Dasd.tt", "_class" : "Resource","resourceEmail" : "test2@test.com" }
{ "_id" : "Bbb.rr", "_class" : "Resource", "resourceEmail" : "test3@test.com" }
Run Code Online (Sandbox Code Playgroud)

在Java代码中,我将它们列出如下:

 MongoOperations mongoOperations = mongoConfiguration.getMongoTemplate();
  List<Resource> resourceList = mongoOperations.findAll(Resource.class);
  return resourceList;
Run Code Online (Sandbox Code Playgroud)

我怎么能按ID排序这些文件!

mongodb mongodb-java spring-data-mongodb

3
推荐指数
1
解决办法
7733
查看次数

如何用morphia注释复合键上的索引

我正在使用morphia github 1.2.2版.我知道如何在morphia实体上的一个字段上注释索引,但有没有办法在两个字段的组合上注释索引.例如,如果我想在字段a和b上有一个复合索引,那么下一个类的注释是什么.

@Entity
public class TestClass
{
    @Property("a")
    private int fieldA;
    @Property("b")
    private int fieldB;
    //how to annotate index of compound key fieldA and fieldB using morphia index annotation?
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

mongodb morphia mongodb-java

3
推荐指数
1
解决办法
4349
查看次数

在java中使用MongoDB db.collection.remove(query)

MongoDB Java驱动程序中是否有一种方法可以调用db.collection.remove(query)我在MongoDB shell文档中看到的方法?也就是说,我知道我需要找到我想从MongoDB中删除的所有文档的确切标准,但我找不到一种方法来一次调用删除那些记录.我能弄清楚的就是找到文件,然后逐一删除它们.

我看到这个 http://docs.mongodb.org/manual/reference/method/db.collection.remove/ 这暗示应该有办法做到这一点,但我无法弄清楚Java调用让我这么做那个电话.

谢谢您的帮助

java mongodb mongodb-java

3
推荐指数
1
解决办法
1万
查看次数

连接到不存在的mongodb服务器不会引发异常

我正在玩Java的MongoDB驱动程序.所以我刚刚创建了一个简单的应用程序来连接到MongoDB服务器并选择一个数据库.
所以我创建了一个实例MongoClient并选择了一个'DB':

try
{
    MongoClient client = new MongoClient("localhost", 27017);
    DB database = client.getDB("example");
}catch(Exception e){
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

由于mongod我的机器上没有正在运行的实例,我预计client会抛出一个Exception.不幸的是情况并非如此.
即使选择数据库也没有任何反应.它就像有一个正在运行的mongod实例一样.

我查看了有关Java驱动程序的文档,但找不到任何有关它的信息.与Google相同.
我错过了什么吗?

我正在使用官方网站上的最新MongoDB驱动程序(版本2.12.2).

java mongodb mongodb-java

3
推荐指数
1
解决办法
2093
查看次数

使用java中的autoincrement字段在mongodb中插入文档

我试图在一个事务中从java插入一个带序列号的文档.

与此类似的东西:

function getNextSequence(name) {
    var ret = db.counters.findAndModify(
        {
            query: { _id: name },
            update: { $inc: { seq: 1 } },
            new: true
        }
    );

    return ret.seq;
}
collection.insert({
    number: getNextSequence("userid"),
    name: "Some Name"
});
Run Code Online (Sandbox Code Playgroud)

是否有可能从java做到这一点?最好用官方的java驱动程序.

java mongodb mongodb-java mongodb-query

3
推荐指数
1
解决办法
8440
查看次数

从字符串转换为MongoDB ObjectID

我尝试将String ID转换为MongoDB ObjectID

public class relevancy_test extends  Object implements Comparable<ObjectId> {
    public static void main(String[] args) throws UnknownHostException {
        MongoClient mongo = new MongoClient("localhost", 27017);
        DB mydb = mongo.getDB("test");
        DBCollection mycoll = mydb.getCollection("mytempcoll");
        BasicDBObject query = null;
        Map<ObjectId, DBObject> updateMap = new HashMap<ObjectId, DBObject>();
        List<DBObject> dbobj = null;
        DBCursor cursor = mycoll.find();
        dbobj = cursor.toArray();

        for (DBObject postObj : dbobj) {
            String id = postObj.get("_id").toString();
            ObjectId objId = new ObjectId((String) postObj.get("_id"));
            updateMap.put(objId, postObj);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

(String) postObj.get("_id")是表格 …

java mongodb mongodb-java

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

MongoDB Java Driver 3.0 MapReduce

这是我用来运行map reduce on sourceCollectionName和获取输出的代码targetCollectionName.但是永远不会创建targetCollectionName.

 new MongoClient("localhost").getDatabase(dbName).getCollection(sourceCollectionName)
                .mapReduce(map, reduce)
                    .action(MapReduceAction.REPLACE)
                    .databaseName(dbName)
                    .collectionName(targetCollectionName)
                    .sharded(false);
Run Code Online (Sandbox Code Playgroud)

虽然我能够MapReduceIterable在迭代时获得输出,但结果会按预期转储.这是正确的方法吗?

MapReduceIterable mapReduceIterable = new MongoClient("localhost").getDatabase(dbName).getCollection(sourceCollectionName)
                .mapReduce(map, reduce)
                    .action(MapReduceAction.REPLACE)
                    .databaseName(dbName)
                    .collectionName(targetCollectionName)
                    .sharded(false);

for(Object o:mapReduceIterable){
     //Just Iterating makes map reduce to dump output collection
}
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-java

3
推荐指数
1
解决办法
815
查看次数

使用带有mongodb api的java从mongodb中检索数组

我知道有很多问题,并且答案很好.问题是所有这些问题都使用MongoDBObject,MongoDBList来检索数组.我的问题是我正在使用http://api.mongodb.org/java/3.0/index.html?overview-summary.html api,我很难检索数组并向其中添加元素.我必须使用MongoCollection,MongoDatabase和MongoClient.我正试图解决mongodb课程的作业.问题陈述是找到一个数组并在mongod中更新它.

这是我尝试过的

      Document post = null; Bson filter = new Document("permalink",
      permalink); Bson projection = new Document("comments", true);
      List<Document> comments = postsCollection.find(filter)
      .projection(projection).into(new ArrayList<Document>());
      System.out.println(comments);

      post = postsCollection.find(Filters.eq("permalink",
      permalink)).first();

      Document newComment = new Document();

      newComment.append("author", name); newComment.append("body", body);
      if (email != null && (!email.equals(""))) {
      newComment.append("email", email); }

      comments.add(newComment);

      Bson filter2 = new Document("_id", post.get("_id"));
      System.out.println(comments); post =
      postsCollection.find(filter).first();

      postsCollection.updateOne(filter2, new Document("$unset",new
      Document("comments",true))); postsCollection.updateOne(filter2, new
      Document("$set", new Document( "comments", comments)));
Run Code Online (Sandbox Code Playgroud)

这不会创建新评论.相反,它在comments数组本身中创建了另一个注释数组.数组应该在学生中更新

这是json数据 …

java mongodb mongodb-java

3
推荐指数
2
解决办法
8100
查看次数

如何在MongoDB中返回没有objectId的集合的文档?

DB db = mongo.getDB("sample");
DBCollection table = db.getCollection("samplecollection");
DBCursor cursor2 = table.find();
Run Code Online (Sandbox Code Playgroud)

给出的结果为:{“ _id”:{“ $ oid”:“ 58bfbcff1d30d8a8c1194328”},“ ID”:1,“ NAME”:“ dgsdg”}

如何获取没有objectid的文档?

java mongodb mongodb-java

3
推荐指数
1
解决办法
1595
查看次数

使用Java(Windows)连接到在Docker内部运行的MongoDB副本集

我想用docker设置一个MongoDB副本集。设置似乎很好,但是我无法使用Java应用程序连接到集群。我正在Windows 10上使用VirtualBox作为驱动程序运行Docker版本17.06.0-ce。

我按照本教程中的说明进行操作:http : //www.sohamkamani.com/blog/2016/06/30/docker-mongo-replica-set/

因此,我首先在docker中创建了my-mongo-cluster网络,并使用以下命令运行3个容器:

$ docker run --name mongo1 -d --net mongo-cluster -p 9042:27017 mongo:3.6.0 mongod --replSet my-mongo-set
$ docker run --name mongo2 -d --net mongo-cluster -p 9142:27017 mongo:3.6.0 mongod --replSet my-mongo-set
$ docker run --name mongo3 -d --net mongo-cluster -p 9242:27017 mongo:3.6.0 mongod --replSet my-mongo-set
Run Code Online (Sandbox Code Playgroud)

然后,我连接到mongo1容器,并使用以下配置设置副本集:

config = {"_id" : "my-mongo-set", "members" : [{"_id" : 0,"host" : "mongo1:27017"},{"_id" : 1,"host" : "mongo2:27017"},{"_id" : 2,"host" : "mongo3:27017"}]}
rs.initiate(config)
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常。从mongo1容器的日志中可以看出,所有容器都是相互连接的。

现在,我正在尝试从Java应用程序连接到副本集。我正在使用3.6.0版的mongodb驱动程序。这是我用来连接到在docker中运行的副本集的代码:

List<ServerAddress> serverAddresses = new ArrayList<ServerAddress>();
serverAddresses.add(new ServerAddress(InetAddress.getByName("192.168.99.100"), …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-java docker mongodb-replica-set

3
推荐指数
2
解决办法
2441
查看次数