簡體   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