2015-04-01 141 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()中。

相關問題