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