ใน MongoDB ฉันกำลังพยายามเขียนแบบสอบถามโดยที่ฉันมีอาร์เรย์อินพุตสองตัว Bills
, Names
โดยที่อันแรกมี billids และอันที่สองมีชื่อของบุคคล ในความเป็นจริง 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 สามารถทำงานในอาร์เรย์ของวัตถุได้ ฉันสามารถมีอาร์เรย์ของวัตถุที่มีคีย์เป็นการเรียกเก็บเงินและชื่อ
var arr = [{ billid: "bill1", "name": "name1"}, {billid: "bill2", "name": "name2"}, {billid: "bill3", "name": "name3" }]
แต่ประเด็นคือจะใส่แบบสอบถามด้านล่างได้อย่างไร
{ $and: [{ billid: { $in: arr.Bills } }, {name: arr.Names}] }