![](/img/trans.png)
[英]How to convert string to ObjectId type and use in $lookup for mongodb?
[英]How to use ObjectId in $lookup using mongodb nodejs drivers
請幫助我找到合適的解決方案
收集用戶詳細信息的集合app_users
{
_id: {
$oid: "abcd1235a6ad4a56dadasd"
},
user_name: "vikas Kandari",
user_dp: "ASDAD486412.jpg"
}
用戶預訂存儲預訂的集合
{
_id : {
$oid : "asdasdasdasdasd"
},
user_id : "abcd1235a6ad4a56dadasd",
booking_item : "some product",
booking_date : "datetime"
}
我正在使用的查找(左聯接)查詢是
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
const url = 'mongodb://root:root@localhost:3000/app';
const dbName = 'app';
MongoClient.connect(url, function(err, client) {
assert.equal(err, null);
console.log("Connected successfully to server");
const db = client.db(dbName);
const collection = db.collection('users');
collection.aggregate([{
$lookup: {
from: 'bookings',
localField: '_id',
foreignField: 'user_id',
as: 'bookings'
}
}]).toArray(function(err, docs) {
assert.equal(err, null);
console.log(docs);
});
client.close();
});
我想從用戶集合中選擇具有相應用戶詳細信息的預訂,但是由於mongodb正在將字符串與objectId進行比較,因此返回空白,是否有任何方法可以執行此任務?
在查找之前添加此
$project:{
$let:
{
vars: { id:'_id.$oid' },
in: ObjectId("$$id")
}
}
改成
$lookup: {
from: 'bookings',
localField: '_id.$oid',
foreignField: 'user_id',
as: 'bookings'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.