【问题标题】:Find in array of references mongodb在引用数组中查找 mongodb
【发布时间】:2014-01-17 18:09:25
【问题描述】:

我有这种模型:

MyCollection
{
  ...
  groups : [{ type: Schema.Types.ObjectId, ref: 'Group' }],
  ...
}

现在我怎样才能找到所有具有已知 _id 组的文档? 我试过了

MyCollection.find({
                'groups' : {
                  $elemMatch : {
                    '$ref' : 'Group',
                    '$id'  : myid
                  }
                }
             }).exec(cb);

但它不起作用。我对这个问题感到非常沮丧。

示例文档:

{ _id: 52d7dd87f3f1e72c7c000005,
   groups: [ { _id: 52d02565360c206933000013, name: 'groupname' } ],
   date: Thu Jan 16 2014 10:15:00 GMT+0200 (EET),
   ...
}

再试一次:

> db.groups.find({ "name" : "NINFOS13"})
{ "_id" : ObjectId("52d8fad69c7817b52a000012"), "createdAt" : ISODate("2014-01-  17T09:41:42.365Z"), "name" : "NINFOS13", "__v" : 0 }
> db.subjects.insert({groups : [ { _id : ObjectId("52d8fad69c7817b52a000012"), name : "NINFOS13"}]})
> db.subjects.find()
{ "_id" : ObjectId("52d8fb7c1c4493a980630c68"), "groups" : [  {  "_id" : ObjectId("52d8fad69c7817b52a000012"),  "name" : "NINFOS13" } ] }
> db.subjects.find({"groups._id" : ObjectId("52d8fb7c1c4493a980630c68")}).count()
0

对不起,我犯了一个错误,这个查询有效!

【问题讨论】:

  • 我编辑的,是模特的名字,忘记改了
  • 您能否提供一个来自 MyCollection 的示例文档?
  • 已添加到问题中
  • 看来你应该只使用:find({"groups._id":myid})
  • {"group._id": new ObjectId("...")} 这样的查询对我有用。你的 mongo shell 的版本是什么?我的是 2.4.3

标签: javascript mongodb mongoose


【解决方案1】:

为我工作(使用 mongo shell):

> db.stack.insert({groups: [ { _id: ObjectId("52d02565360c206933000013"), name: "groupname" } ]});    

> db.stack.find()
{ "_id" : ObjectId("52d8924b5c90ea648f2a4664"), "groups" : [  {  "_id" : ObjectId("52d02565360c206933000013"),  "name" : "groupname" } ] }

> db.stack.find({"groups._id": ObjectId("52d02565360c206933000013")});
{ "_id" : ObjectId("52d8924b5c90ea648f2a4664"), "groups" : [  {  "_id" : ObjectId("52d02565360c206933000013"),  "name" : "groupname" } ] }

也许你有一个错字。

【讨论】:

    猜你喜欢
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    相关资源
    最近更新 更多