【问题标题】:node.js, mongoose how to find in array of objects by multiple IDsnode.js,猫鼬如何通过多个ID在对象数组中查找
【发布时间】:2014-03-10 13:48:37
【问题描述】:

我在使用带有 Mongoose 模块的 Node.js 时遇到了问题。

我有一个 Schema 模型,如下所示:

_id: '',
foo: '',
bar: '',
fb: [{
    id: ''
}]

如何找到集合中的所有对象以匹配 fb[0].id 并传入一个 ID 数组?

我已经尝试过这个(find() 方法和以下查询):

{'fb[0].id': {$in: friendsIDList}}

还有这个:

{'fb': {$in: [{id: friendsIDList}]} }

甚至这个

{'fb': {$in: {$in: friendsIDList}}}

更清楚地说,我有一个用户对象,它在 fb 参数中包含他们的 FB 数据,但它是一个仅包含一个带有数据的对象的数组。 现在我收到一个好友 ID 列表,想查询所有用户好友。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    MongoDB 有一个名为 dot notation 的东西,因此您可以使用 'foo.0.id': 'id' 进行查询。

    测试如下:

    > db.users.insert({foo: 'foo', bar: 'bar', fb: [ { id: '456' } ]})
    > db.users.find({'fb.0.id': '456'}).pretty()
    {
        "_id" : ObjectId("52fb695e403fb143985459dc"),
        "foo" : "foo",
        "bar" : "bar",
        "fb" : [
            {
                "id" : "456"
            }
        ]
    }
    

    【讨论】:

    • 0fb.0.id中有什么意义?
    • fb属性数组中第一个对象的id属性。就像在大多数编程语言中做 fb[0].id = 456
    猜你喜欢
    • 2023-01-30
    • 2017-03-28
    • 1970-01-01
    • 2020-09-12
    • 2021-07-20
    • 1970-01-01
    • 2021-09-04
    • 2023-01-22
    • 2021-10-17
    相关资源
    最近更新 更多