1
我希望能夠匹配/過濾來自whiskey.style的特定風格。
我想知道是否由於OID的格式不匹配。我試過的toString()的文件似乎表明 - 可能需要調查這更..
這裏是我的查詢/ $匹配對象
var qObj.whiskeyFilter = { whiskey: { style: '57953144abfaa62383341a72' },
_id:
{ '$in':
[ 57a115304d124a4d1ad12d81,
57a114d64d124a4d1ad12d7f,
57a1152a4d124a4d1ad12d80,
57a9049906f3733623826538 ] } }
我管線:
var pipeline = [
{
"$project": {
"weight": stack[0],
"whiskey": "$$ROOT",
"collection":
collect[0]
}
},
{
"$match": qObj.whiskeyFilter
}, {
"$sort": {
"weight": 1
}
}, {
"$limit": 12
}, {
"$skip": qObj.skip
}];
這如果我只爲$ match包含_id/$ in,但它不會與whiskey.style匹配。
這是什麼會從總回報的例子:
[ { _id: 57a115304d124a4d1ad12d81,
weight: 1,
whiskey:
{ _id: 57a115304d124a4d1ad12d81,
name: 'sample whiskey 2',
distiller: 578c04f76091bcd618f26e04,
style: 57953144abfaa62383341a72,
userVote: 0,
timestamp: Tue Aug 02 2016 16:48:32 GMT-0500 (CDT),
total: 1,
vote: 2,
__v: 0 },
collection:
{ _id: 57acb4ff093360bee276aae6,
user: 57919ac16fa0390856a9998f,
whiskey: 57a115304d124a4d1ad12d81,
__v: 0,
collected: true,
vote: 1,
timestamp: Thu Aug 11 2016 12:25:19 GMT-0500 (CDT),
favorite: true } }
]
更新
我將它轉換成一個對象ID,因爲我讀過的聚集可能有問題的鑄造串,但我還是我沒有得到任何回報預期的匹配:
mongoose.Types.ObjectId(obj.style);
現在,你可以看到風格ID是不不再是一個字符串,但仍然$比賽似乎並沒有工作:
match query : { whiskey: { style: 57953144abfaa62383341a72 },
_id:
{ '$in':
[ 57a115304d124a4d1ad12d81,
57a114d64d124a4d1ad12d7f,
57a1152a4d124a4d1ad12d80,
57a9049906f3733623826538 ] } }
是風格對_id字段的引用?如果是的話不應該風格和$ in子句被指定爲ObjectId而不是隻是id ..我的意思是ObjectId(57953144abfaa62383341a72)? – user641887
是的。它是。我會嘗試的。這是我在發佈此消息時的假設。 – NoobSter
我試過轉換ObjectID('字符串id'),但沒有運氣。 – NoobSter