2012-04-07 12 views
15

Ho creato alcuni documenti e sono riuscito a fare alcune semplici query ma non riesco a creare una query che trovi i documenti in cui un campo esiste.Come posso verificare se un campo esiste o no in MongoDB?

Per esempio supponiamo che questo è un documento:

{ "profile_sidebar_border_color" : "D9B17E" , 
    "name" : "???? ???????" , "default_profile" : false , 
    "show_all_inline_media" : true , "otherInfo":["text":"sometext", "value":123]} 

Ora voglio una query che porterà tutti i documenti in cui il testo in otherInfo ha qualcosa in esso.

se non c'è alcun testo, quindi il otherInfo sarà solo così: "otherInfo":[]

Quindi voglio verificare l'esistenza del campo text in otherInfo.

Come posso ottenere questo risultato?

risposta

50

È possibile utilizzare l'operatore $exists in combinazione con la notazione .. La query nuda nel Mongo guscio dovrebbe essere simile a questo:

db.yourcollection.find({ 'otherInfo.text' : { '$exists' : true }}) 

E un banco di prova in Java potrebbe essere la seguente:

BasicDBObject dbo = new BasicDBObject(); 
    dbo.put("name", "first"); 
    collection.insert(dbo); 

    dbo.put("_id", null); 
    dbo.put("name", "second"); 
    dbo.put("otherInfo", new BasicDBObject("text", "sometext")); 
    collection.insert(dbo); 

    DBObject query = new BasicDBObject("otherInfo.text", new BasicDBObject("$exists", true)); 
    DBCursor result = collection.find(query); 
    System.out.println(result.size()); 
    System.out.println(result.iterator().next()); 

uscita:

1 
{ "_id" : { "$oid" : "4f809e72764d280cf6ee6099"} , "name" : "second" , "otherInfo" : { "text" : "sometext"}} 
0

La query in non filtra tutti gli elementi con il valore di testo, vedere di seguito.

db.things.find({otherInfo:{$in: [text]}}); 

BasicDBObject query = new BasicDBObject(); 
query.put("otherInfo", new BasicDBObject("$in", "[text]")); 
var result = db.find(query); 
+0

Ciao, grazie per la rispondi, come posso farlo in Java? – jan1

+0

http://www.mongodb.org/display/DOCS/Java+Tutorial –

Problemi correlati