我有一个mongodb集合,其中对象的结构如下:
{
"id": "1234",
"history": [
{
"userid": 100,
"myobjects": [{id, id1, id4}]
},
{
"userid": 200,
"myobjects": [{id2, id3, id5}]
},
}
目标:如果我的用户ID为100,则返回其历史记录中不包含我的用户ID的对象。我猜它是某种“我的用户ID不在历史字段的键中”,但我不知道如何写出来。这是我的基本想法:
Collection.findOne(
{
in_progress : null,
history : {"$nin": myuserid } ???
}
);
任何帮助将不胜感激!
答案 0 :(得分:0)
db.test.aggregate([
{
"$unwind" : "$history"
},
{
"$match" : {
"history.userid" : {
"$ne" : 100
}
}
},
{
"$group" : {
"_id" : "$id",
"history" : {
"$push" : "$history"
}
}
}
]);