gpt4 book ai didi

php - 使用 mongoDB Jenssegers Laravel 运行原始查询

转载 作者:可可西里 更新时间:2023-11-01 10:19:29 24 4
gpt4 key购买 nike

我正在尝试将以下 mongoDB 查询与 Laravel Jessanger 结合使用, 但无法将其作为 raw 查询运行。

db.getCollection('users').aggregate([
{
"$group": {
"_id": { "cnic": "$cnic", "time_in": "$time_in" },
"uniqueIds": { "$addToSet": "$_id" },
"count": { "$sum": 1 }
}
},
{ "$match": { "count": { "$gt": 1 } } }
]).forEach(function(doc) {
doc.uniqueIds.shift();
db.getCollection('users').remove({_id : {$in: doc.uniqueIds }});
})

我只想运行这个简单的查询,因为它是为了从数据库中删除重复项。

我试着像下面这样使用:

Users::raw()->find('mongo raw statement')

$cursor = DB::collection('users')->raw(function($collection)
{
return $collection->find('mongo raw statement');
});

谢谢

最佳答案

这是我第一天使用 Mongodb (Laravel Jensseger),我很幸运能够弄明白。所以,我想查询我的 Messages 模型:

// This is the SQL version
$unreadMessageCount = Message::selectRaw('from_id as sender_id, count(from_id) as messages_count')
->where('to_id', auth()->id())
->where('read', false)
->groupBy('from')
->get();

// This is the Mongo version. The solution was figuring out the 'aggregate' concept in Mongo
$unreadMessageCount = Message::raw(function($collection)
{
return $collection->aggregate([
[
'$match' => [
'to_id' => auth()->id()
]
],
[
'$group' => [
'_id' => '$from_id',
'messages_count' => [
'$sum' => 1
]
]
]
]);
});

希望这对您有所帮助。

关于php - 使用 mongoDB Jenssegers Laravel 运行原始查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40619898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com