我使用nodejs、mongodb (所以mongodb作为数据库)和javascript。
我有一个名为A的集合,下面是一些例子:
{
"item": "Kitchen",
"location": "New York",
"ids" : [ ObjectId("5f6dce24021e15a1121a649a"), ObjectId("5f6dce24021e15a1121a649b"), ObjectId("5f6dce24021e15a112a649c")]
}
{
"item": "Bathroom",
"location": "New York",
"ids" : [ObjectId("5f6dce24021e15a112a649c")]
}
{
"item": "Living Room",
"location": "New York",
"ids" : [ ObjectId("5f6dce24021e15a1121a649a"), ObjectId("5f6dce24021e15a1121a649b")]
}is是对另一个集合的引用,我将将其命名为B。在集合B中的一个例子是:
{
"_id" : ObjectId("5f6dce24021e15a1121a649a"),
"name" : "George",
"Age": 12,
"Nationality": "English"
}我希望能够在集合A中找到ids数组中有ObjectId("5f6dce24021e15a1121a649a")的所有项。
例外结果:["Kitchen", "Living Room"]
有人知道我怎么处理吗?
发布于 2020-09-27 10:28:04
你可以使用合计()方法,
$match数组中的ids搜索id$group items数组中的所有项db.A.aggregate([
{ $match: { ids: ObjectId("5f6dce24021e15a1121a649a") } },
{
$group: {
_id: null,
items: { $push: "$item" }
}
}
])你可以使用查找()方法,
let result = await db.A.find(
{ ids: ObjectId("5f6dce24021e15a1121a649a") },
{ _id: 0, item: 1 }
);
let items = result.map(obj => obj.item);
console.log(items);发布于 2020-09-27 11:04:22
Mongo允许您以查询无数组字段的方式查询数组.
它还有一个内置的不同的函数,用于从查询中获取唯一值。
db.collection.distinct("item", {ids: ObjectId("5f6dce24021e15a1121a649a")})https://stackoverflow.com/questions/64087261
复制相似问题