#javascript
#javascript
Вопрос:
Я работаю над MongoDB, чтобы получить некоторый вывод, и для этого я пишу javascript для передачи в оболочку mongo.
У меня есть один объект, в котором одно значение имени поля представляет собой массив некоторых идентификаторов, и формат этих идентификаторов следующий
DBRef(«Intention», ObjectId(«53247206e4dee78d74b9e91»))
Я должен получить 5a3247206e4dee78d74b9e91 из приведенной выше записи, чтобы передать ее некоторым другим запросам.
мой сценарий выглядит следующим образом
var cursor = db.coll.find({_id: "797276b3-d86b-48cd-ac1d-5d15ccd776da", "accountId" : "abc"})
cursor.forEach(function(w){
id=w._id;
title=w.title;
response=w.message;
intentions = [];
entities = [];
var cursor2 = db.coll2.find({_id:id});
cursor2.forEach(function(x){
if(x.intentions != undefined)
{
for( i = 0; i < x.intentions.length; i )
{
var a = x.intentions[i];
print(a);
var arr = a.split(""");
print(arr);
//cursor3 = db.coll3.find({_id:x.intentions[i]});
//print(cursor3);
}
}
})//cursor2
})//cursor
когда я запускаю этот скрипт следующим образом
/mnt/deployment/mongodb/монгодб-linux-x86_64-rhel62-3.4.2/bin/mongo db-name intentions.js
это выдает мне следующую ошибку:
Версия оболочки MongoDB v3.4.2 подключение к: mongodb: //127.0.0.1:27017/db-name Версия сервера MongoDB: 3.4.2 DBRef(«Intention», ObjectId(«5a3247206e4dee78d74b9e91»)) 2019-03-11T05:41:50.251 0000 E ЗАПРОС [thread1] Ошибка типа: a.разделение не является функцией : Намерения.js:19:17 DBQuery.prototype.forEach@src/mongo/shell/query.js:501:1 Intentions.js:12:1 DBQuery.prototype.forEach@src/mongo/shell/query.js:501:1 Не удалось загрузить Intentions.js:3:1: Intentions.js
Комментарии:
1. вы должны использовать
$split
оператор при агрегировании2. @DakshMiglani но я пишу отдельный javascript, чтобы узнать, как javascript будет определять $ split, и я просто хочу просто разделить всю строку. с двойными кавычками в качестве разделителя.
3. Пожалуйста, добавьте свою схему cursor2. каков тип намерений?
4. @AZ_ intentions имеет тип array, и каждое значение этого массива имеет следующий формат DBRef(«Intention», ObjectId(«5a3247206e4dee78d74b9e91»))
5. хорошо, split — это метод string, не относящийся к объекту MongoDB id, поэтому вам нужно получить значение id, т. е. 5a3247206e4dee78d74b9e91?