簡體   English   中英

為Mongodb創建多個動態對象NodeJs查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM