2014-11-27 5 views
0

У меня есть коллекция электронных писем в MongoDB с полем, содержащим массив json.Querying mongodb

Как узнать отправителя и получателя, как я могу найти все электронные письма, обменянные между двумя людьми? Мне нужно сделать что-то вроде

db.email.find({"from": [email protected]", "tos":"[email protected]")

, но я не могу найти правильный способ, чтобы написать этот запрос :(

> db.emails.findOne() 
{ 

    "from" : { 
     "real_name" : "it", 
     "address" : "[email protected]" 
    }, 
    "tos" : [ 
     { 
      "real_name" : null, 
      "address" : "[email protected]" 
     } 
    ], 

} 

ответ

1

Используйте "from.address" и "tos.address":

db.emails.find({"from.address" : "[email protected]", "tos.address" : "[email protected]"}) 
+0

Быстрая ссылка на документацию: http://docs.mongodb.org/manual/reference/method/db.collection.find/#query-fields-of-a- поддокумент –

1

Каждое поле рассматривается как JSON, мы можем точнее ожидаемое значение через «»:

db.emails.find({"tos.address" : "[email protected]", "from.address":"[email protected]"}) 
1

Объекты и данные, находящиеся внутри них, могут быть доступны через оператора .. Так что запрос будет:

db.emails.find({"from.address" : "[email protected]", "tos.address" : "[email protected]"}).