【问题标题】:Creating multiple dynamic objects NodeJs queries for Mongodb为 Mongodb 创建多个动态对象 NodeJs 查询
【发布时间】:2016-06-16 07:29:14
【问题描述】:

我有一个对象数组

[ 
  {
    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'
] 

等等。

然后在最后一个 finally 查询对象

var queryFinal = { $or: [ q1, q2,q3......qn] }

我该怎么做?

【问题讨论】:

  • 您这样做究竟想达到什么目的?
  • 还有一点,在每个查询中,您不需要$and。除此之外,我不明白你想在这里实现什么。你能解释一下吗?
  • 我将提供这个 queryFinal 以从集合中获取一些值。

标签: javascript node.js mongodb asynchronous underscore.js


【解决方案1】:

只需使用常规 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"
                                ]
                        }
                }
        ]
}

【讨论】:

    猜你喜欢
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多