В MongoDB я пытаюсь написать запрос, в котором у меня есть два входных массива Bills
, Names
, где первый содержит биллиды, а второй - имена людей. Также на самом деле Bills в индексе i
и Names в индексе i
- это фактический документ, который мы хотим искать в MongoDB.
Я хочу написать такой запрос, чтобы Bills[i] = db_billid && Names[i] = db_name
, что означает, что я хочу вернуть результат, в котором по определенному индексу совпадают и идентификатор, и имя.
Я думал об использовании $in
, но дело в том, что я могу применить $in
в Bills
, но я не знаю, по какому индексу найден этот биллид.
{ $and: [{ billid: { $in: Bills } }, {name: Names[**index at which this bill is found]}] }
Может ли кто-нибудь помочь мне, как я могу это решить?
Схема MongoDB
var transactionsschema = new Schema({
transactionid: {type: String},
billid: {type: String},
name: {type: String}
});
Образцы документов в MongoDB
{ _id: XXXXXXXXXXX, transactionid: 1, billid : bnb1234, name: "sudhanshu"}, { _id: XXXXXXXXXXX, transactionid: 2, billid : bnb1235, name: "michael"}, { _id: XXXXXXXXXXX, transactionid: 3, billid : bnb1236, name: "Morgot"}
Примеры массивов
Bills = ["bill1", "bill2", "bill3"], Names = ["name1", "name2", "name"]
Изменить - если $ in может работать с массивом объектов, тогда у меня может быть массив объектов с ключами, такими как billid и name.
var arr = [{billid: "bill1", "name": "name1"}, {billid: "bill2", "name": "name2"}, {billid: "bill3", "name": "name3" }]
Но дело в том, как поставить запрос ниже
{ $and: [{ billid: { $in: arr.Bills } }, {name: arr.Names}] }