2015-04-01 119 views
3

我有一个device集合。如何使用java在mongodb中搜索文档并从中删除字段?

{ 
    "_id" : "10-100-5675234", 
    "_type" : "Device", 
    "alias" : "new Alias name", 
    "claimCode" : "FG755DF8N", 
    "hardwareId" : "SERAIL02", 
    "isClaimed" : "true", 
    "model" : "VMB3010", 
    "userId" : "5514f428c7b93d48007ac6fd" 
} 

我想_id搜索文档,然后更新它从结果文档中删除字段userId之后。我尝试了不同的方式,但是他们都没有工作。请帮帮我。

+0

你能否提供一些简单的信息,说明你到目前为止所做的工作,并提供更多的描述,如样本文件,你想从文件中删除的字段等? – Vishwas 2015-04-01 13:27:50

+0

它可能会帮助你.http://stackoverflow.com/questions/18455937/remove-id-from-mongodb-result-java – 2015-04-01 13:37:38

+0

我的集合是这样的,我想通过_id搜索集合,然后删除用户ID字段从数据库。 { “_id”: “10-100-5675234”, “_type”: “设备”, “别名”: “新别名”, “claimCode”: “FG755DF8N”, “硬件ID”:“SERAIL02 ” ‘isClaimed’:‘真’, ‘模式’:‘VMB3010’, ‘用户id’:‘5514f428c7b93d48007ac6fd’ } – Swapnil1988 2015-04-02 09:00:13

回答

5

您可以删除以这种方式使用$unset与蒙戈-Java驱动程序字段:

MongoClient mongo = new MongoClient("localhost", 27017); 
    DB db = (DB) mongo.getDB("testDB"); 
    DBCollection collection = db.getCollection("collection"); 
    DBObject query = new BasicDBObject("_id", "10-100-5675234"); 
    DBObject update = new BasicDBObject(); 
    update.put("$unset", new BasicDBObject("userId","")); 
    WriteResult result = collection.update(query, update); 
    mongo.close(); 

更多信息位于:http://www.journaldev.com/4334/mongodb-update-document-set-all-example-mongo-shell-java-driver

0

一个丑陋的方法是用新版本的文档(无用户标识)替换旧版本。

BasicDBObject newDocument = new BasicDBObject(); 
newDocument.put("_type", "Device"); 
newDocument.put("alias", "new Alias name"); 
// ... 

BasicDBObject searchQuery = new BasicDBObject().append("_id", "10-100-5675234"); 

collection.update(searchQuery, newDocument); 
0

MongoDB的文档提供了一个clear answer这个问题:使用$未设置更新操作。

0

最简单的方法是在Java驱动程序才能使用的功能:

Query query = new Query(); 
query.addCriteria(Criteria.where("_id").is(new ObjectId("10-100-5675234"))); 
Update update = new Update(); 
update.unset("userId"); //the fields you want to remove 
update.set("putInYourFieldHere", "putInYourValueHere"); //the fields you want to add 
mongoTemplate.updateFirst(query, update, Device.class); 

上面的代码假定您的"_id"是你的mongodb正常"_id"这意味着该您正在寻找的变量必须包含在new ObjectId()中。

相关问题