我有这种文件
{
"_id" : "5339be1d9a703ab8708b45675339bed39aac7",
"description" : "data",
"name" : "data",
"members" : [
{
"user" : {
"$ref" : "users",
"$id" : ObjectId("5339be1d9a703ab8708b4567"),
"$db" : "someDb"
},
"type" : "Principal"
},
{
"user" : {
"$ref" : "users",
"$id" : ObjectId("5339c0c59a703a5d1f8b4569"),
"$db" : "someDb"
},
"type" : "Regular"
}
],
"owner" : "5339be1d9a703ab8708b4567",
}
我试图从数组成员中提取一个元素,通过用户对象中的$ id找到它。
我使用的是Mongoose ODM。
这是我的功能:
> var conditions = {"_id" : data.guildId},
> update =
> {
> $pull :
> {
> 'members.user.$id' : new mongoose.Types.ObjectId(data.userId)
> }
> };
> var options = {upsert:false};
>
> Guild.update(conditions, update, options, leaveRoom);
我的节点js服务器或mongo日志文件中没有报告错误,但文档仍然不受影响。
答案 0 :(得分:0)
你的拉语法错了。 $pull采用数组,在您的情况下是“成员”。
您想要此更新:
{ "$pull" : { "members" : { "user.$id" : <your-condition> } }