Как я могу отфильтровать запрос в массиве?

#mongodb

#mongodb

Вопрос:

Мои данные в MongoDB:

 {
    "_id" : NumberLong(411694285),
    "transactionDataList" : [ 
        "{"key":"6b8020acd2fdf393e67459dcb5d241cd2","txaction":"appoint","portalid":"2027601","aid":"2344","clearingtype":"sb","notify_version":"7.4","txtime":"32414","currency":"EUR","userid":"2324035","accessname":"","accesscode":"","param":"cohort-496666-0-0-12","mode":"live","price":"169.95","id":{"1":"Tei"},"pr":{"1":"169.95"},"no":{"1":"1"},"de":{"1":"Te 12 Monate"},"ti":{"1":"Te12 Monate"},"va":{"1":"19.00"},"txid":"4132432285","reference":"4906-65a84dsdf3","sequencenumber":"1","company":"","firstname":"Max","lastname":"Mustermann","street":"Weg 37","zip":"33333","city":"Moll","email":"muster@gmail.de","country":"DE","customerid":"2342","balance":"0","receivable":"111.95"}"
    ],
    "_class" : "de.xxxx.creatinginvoice.model.TransactionModel"
}
  

Я хочу отфильтровать свои данные в MongoDB. Нравится:

 db.getCollection('transaction').find({"transactionDataList":{$elemMatch: { "lastname":"Mustermann" } }});
  

Но я всегда не получал данных после фильтрации. Не знаю, почему.

Комментарии:

1. Похоже, что элемент внутри массива представляет собой строку JSON. Запрос предоставит ожидаемый результат только в том случае, если это объект JSON

2. Я использую Java Framework spring-boot-starter-data-mongodb для вставки данных в MongoDB. Элемент внутри массива сопоставляется классу. Возможно, это строка JSON. Хорошо, как я могу его отфильтровать?

Ответ №1:

Попробуйте это-

 db.collection.aggregate({
  "$match": {
    "transactionDataList.lastname": "Mustermann"
  }
})
  

Игровая площадка Mongo

Комментарии:

1. Это не работает. Я думаю, что элемент внутри массива представляет собой строку JSON.

2. да, я использую java framework spring-boot-starter-data-mongodb для вставки данных в mongodb