嗨有人可以告诉我为什么我不能使用objectId的$ eq作者?
db.boards.aggregate(
[
{
$project: {
"boardcards": {
$reduce: {
input: "$lists.cards",
initialValue: [ ],
in: { $concatArrays: [ "$$value", {
$filter: {
input: "$$this",
as: "result",
cond: { "$eq": [
"$$result.Author",
ObjectId("59df60fb6fad6224f4f9f22d")
]
}
}
}
]
}
}
}
}
}
]
)
如果我为“dada”更改了ObjectId(“59df60fb6fad6224f4f9f22d”),并且在$ lists.cards中的位置如下:
"cards" : [
{
"name" : "1"
},
{
"name" : "2"
},
{
"name" : "3",
"Author" : "dada"
}
]
},
查询将找到结果,但如果我更改ObjectID,我有:
{
"list" : "6",
"cards" : [
{
"name" : "1"
},
{
"name" : "2"
},
{
"name" : "3",
"Author" : [ObjectId("59df60fb6fad6224f4f9f22d")]
}
]
}
有人可以告诉我如何解决这个问题,因为我不能与objectid
相提并论它可以是我没有在模型Object id ??
中设置var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var BoardSchema = new Schema({
name: { type: String, maxlength: 20 },
lists : { type: Array },
users : [{ type : Schema.Types.ObjectId, ref: 'User' }],
});
module.exports = mongoose.model('Board', BoardSchema);
修改 我需要在数组中使用id进行搜索如果我有:
{
"list" : "6",
"cards" : [
{
"name" : "1"
},
{
"name" : "2"
},
{
"name" : "3",
"Author" : [ObjectId("59df60fb6fad6224f4f9f22d"), ObjectId("59df60fb6fad6224f4f9f22d"), ObjectId("59df60fb6fad6224f4f9f22d") ]
}
]
}
我确实喜欢你说:
db.boards.aggregate(
[
{
$project: {
"boardcards": {
$reduce: {
input: "$lists.cards",
initialValue: [ ],
in: { $concatArrays: [ "$$value", {
$filter: {
input: "$$this",
as: "result",
cond : { "$in": [ "$$result.Author", array ]}
}
}
]
}
}
}
}
},
{
"$unwind": "$boardcards"
}
]
)
并且是错误,数组未定义