繁体   English   中英

MongoDb Collection.find()具有多个查询运算符

[英]MongoDb Collection.find() with multiple operators on query

我需要使用对象数组中的两个参数来收集MongoDb集合的元素。

我使用collectionX.find类型()仅带来那些具有“ services.servicesId: [" 1 "," 3 "," 6 "]"services.value": true的组合的元素,而没有"services.value" : false

始终返回所有元素,因为所有元素都有“ servicesId”。

我尝试了几种方法,包括使用$符号,但未成功,返回了一个空数组。 我尝试使用$and并返回所有元素。

我正在使用以下代码在Meteor Client上发布:

 var servicesIds = ["1", "3", "5"]
    return CollectionX.find (
        {"services.serviceId": {$in: servicesIds}},
        {"services.value": true}
    );

该对象具有以下结构:

Id: "ou5HNQGM2KxbBetmy"
createdAt: Mon Apr 06 2015
otherData: Object
personalData: Object
email: test@gmail.com
mobilephone: "11-98654-8785"
name: "UserName"
phone: "11-2625-6364"
services: Array [20]
0: Object {
serviceId: "1",
value: true
} ...

我相信您的第二个搜索参数将用作投影。 尝试:

  var servicesIds = ["1", "3", "5"]
  return CollectionX.find (
       {"Services.serviceId": {$ in: servicesIds},
        "Services.value": true}  // moved { }
  );

始终返回所有元素,因为所有元素都具有servicesId

那是因为您要设置"Services.value": true ,而不是数组,因此查询将忽略它,尝试仅将其分隔为,而不是像使用{}那样将其作为其他查询参数

尝试使用$ elemMatch

   var servicesIds = ["1", "3", "5"]
    CollectionX.find( { services: 
         { $elemMatch : { 'Services.serviceId' : servicesIds, "Services.value" : true } } } );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM