Нет, похоже, что вы делаете это неправильно. Соединения MongoDB являются «клиентской стороной». Очень похоже на то, что вы сказали:
На данный момент я получаю комментарии, соответствующие моим критериям, затем выясняя все uid в этом наборе результатов, получая пользовательские объекты и объединяя их с комментариями. Похоже, я делаю это неправильно.
blockquote>1) Select from the collection you're interested in. 2) From that collection pull out ID's you need 3) Select from other collections 4) Decorate your original results.
Это не «реальное» соединение, но на самом деле оно намного полезнее, чем соединение SQL, потому что вам не нужно иметь дело с дубликатом строки для «многих» сторонних объединений, вместо этого вы украшаете первоначально выбранный набор.
На этой странице много глупостей и FUD. Оказывается, 5 лет спустя MongoDB все еще есть.
Я не могу читать по-тайски (я не такой умный), но, возможно, это может помочь.
Здесь мы используем CROSS APPLY, чтобы «исправить» строку, и тогда это небольшой вопрос из PasrName()
и Concat()
Я должен добавить, что разбор имен - это скользкий уклон. Нужно рассмотреть
Пример
Declare @YourTable table (FullName nvarchar(100))
Insert Into @YourTable values
('John Smith')
,('John J. Smith')
,(N'กล้วยไม้ สวามิวัศดุ์')
Select A.*
,LastName = replace(parsename(S,1),'|','.')
,FirstName = replace(concat(parsename(S,4),' '+parsename(S,3),' '+parsename(S,2)),'|','.')
From @YourTable A
Cross Apply ( values (replace(replace(FullName,'.','|'),' ','.'))) B(S)
Возвращает
FullName LastName FirstName
John Smith Smith John
John J. Smith Smith John J.
กล้วยไม้ สวามิวัศดุ์ สวามิวัศดุ์ กล้วยไม้
РЕДАКТИРОВАТЬ 2008 Версия
Select A.*
,LastName = replace(parsename(S,1),'|','.')
,FirstName = replace( IsNull(parsename(S,4),'') + IsNull(' '+parsename(S,3),'') + IsNull(' '+parsename(S,2),''),'|','.')
From @YourTable A
Cross Apply ( values (replace(replace(FullName,'.','|'),' ','.'))) B(S)
Я тайка, и я знаю одно: тайцы не используют отчество.