[英]Creating multiple dynamic objects NodeJs queries for Mongodb
我有一系列對象
[
{
userId: '541c83d89ff44f767a23c546',
emailArray: [
'abc@amazon.com',
'zxc@amazon.com',
'pqr@amazon.com',
'lol@amazon.com'
]
},
{
userId: '56bd6bf220591a124001d178',
emailArray:[
'mno@gmail.com',
'uvw@gmail.com'
'second@gmail.com'
]
}
]
並為每個userId我想創建如下的MongoDb查詢對象
var q1 = { $and: [ {userId:userId1}, {"interactions.emailId": {$in:emailArray1}
var q2 = { $and: [ {userId:userId2}, {"interactions.emailId": {$in:emailArray2}
var q3 = { $and: [ {userId:userId3}, {"interactions.emailId": {$in:emailArray3}
.....
var qn = { $and: [ {userId:userId(n)}, {"interactions.emailId": {$in:emailArray(n)}
哪里
userId1 = 541c83d89ff44f767a23c546和userId2 = 56bd6bf220591a124001d178
emailArray1 = [
'abc@amazon.com',
'zxc@amazon.com',
'pqr@amazon.com',
'lol@amazon.com'
]
emailaray2 = [
'mno@gmail.com',
'uvw@gmail.com'
'second@gmail.com'
]
等等。
然后最后是一個最終查詢對象
var queryFinal = { $or: [ q1, q2,q3......qn] }
我該怎么辦?
只需使用常規JavaScript:
var data = [
{ userId: '541c83d89ff44f767a23c546',
emailArray:
[ 'abc@amazon.com',
'zxc@amazon.com',
'pqr@amazon.com',
'lol@amazon.com' ]
},
{ userId: '56bd6bf220591a124001d178',
emailArray:
[ 'mno@gmail.com',
'uvw@gmail.com',
'second@gmail.com' ]
}
];
var queryFinal = { "$or": data.map(function(el) {
el["interactions.emailId"] = { "$in": el.emailArray };
delete el.emailArray;
return el;
}) };
所有 MongoDB查詢參數已經是“ AND”條件,因此您不需要$and
在大多數情況下都需要明確聲明。
生產:
{
"$or" : [
{
"userId" : "541c83d89ff44f767a23c546",
"interactions.emailId" : {
"$in" : [
"abc@amazon.com",
"zxc@amazon.com",
"pqr@amazon.com",
"lol@amazon.com"
]
}
},
{
"userId" : "56bd6bf220591a124001d178",
"interactions.emailId" : {
"$in" : [
"mno@gmail.com",
"uvw@gmail.com",
"second@gmail.com"
]
}
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.