[解決済み] Mongoose スキーマで 2 次元ジオインデックスを使用して配列にオブジェクトを正しく定義する方法
2022-05-10 17:12:49
質問
現在、以下のドキュメントのスキーマを作成する際に問題が発生しています。サーバーからの応答は、常に "trk" フィールドの値を [Object] として返します。少なくとも私に意味をなすすべてのアプローチを試したので、どういうわけか、これがどのように機能すべきか見当もつきません。)
もしこれが役に立つなら、私のMongooseのバージョンは3.6.20で、MongoDBは2.4.7です。 そして、忘れないうちに、インデックス (2d) として設定するのもいいかもしれません。
元データです。
{
"_id": ObjectId("51ec4ac3eb7f7c701b000000"),
"gpx": {
"metadata": {
"desc": "Nürburgring VLN-Variante",
"country": "de",
"isActive": true
},
"trk": [
{
"lat": 50.3299594,
"lng": 6.9393006
},
{
"lat": 50.3295046,
"lng": 6.9390688
},
{
"lat": 50.3293714,
"lng": 6.9389939
},
{
"lat": 50.3293284,
"lng": 6.9389634
}]
}
}
Mongoose Schemaです。
var TrackSchema = Schema({
_id: Schema.ObjectId,
gpx: {
metadata: {
desc: String,
country: String,
isActive: Boolean
},
trk: [{lat:Number, lng:Number}]
}
}, { collection: "tracks" });
Chromeのネットワークタブからの応答は常に次のようになります(間違っているのはtrkの部分だけです):
{ trk:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
私はすでに "trk" の異なる Schema 定義を試しました。
- trk: Schema.Types.Mixed
- trk: [Schema.Types.Mixed](スキーマタイプ、混合)。
- trk:[ { type:[Number], index: "2d" }] のようになります。
助けていただけると幸いです。)
どのように解決するのですか?
trkは以下の方法で宣言することができます。 どちらか
trk : [{
lat : String,
lng : String
}]
または
trk : { type : Array , "default" : [] }
2番目のケースでは、挿入時にオブジェクトを作成し、次のように配列にプッシュします。
db.update({'Searching criteria goes here'},
{
$push : {
trk : {
"lat": 50.3293714,
"lng": 6.9389939
} //inserted data is the object to be inserted
}
});
でオブジェクトのArrayを設定することもできます。
db.update ({'seraching criteria goes here ' },
{
$set : {
trk : [ {
"lat": 50.3293714,
"lng": 6.9389939
},
{
"lat": 50.3293284,
"lng": 6.9389634
}
]//'inserted Array containing the list of object'
}
});
関連
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み] 非推奨パッケージに関するNPM警告メッセージ
-
[解決済み】MongooseでEnumを作成し使用する方法
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
webpack ENOENTソリューションの起動
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
-
[解決済み] "app.use(express.cookieSession())" に "secret" オプションが必要です。
-
[解決済み] mongodb/mongoose findMany - 配列にリストされたIDを持つすべてのドキュメントを検索する。
-
[解決済み】Node.jsでMongooseを使用してページングする方法は?
-
[解決済み】Node.js Mongoose.js の文字列を ObjectId に変換する関数
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Nodejs: Errorを解決する方法。ENOENT: そのようなファイルまたはディレクトリがありません
-
[解決済み】AWS STS AssumeRoleへのアクセスを可能にする方法
-
[解決済み] テスト
-
[解決済み】MongoClient v3.0使用時、db.collectionは関数ではない
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】ENOENT, そのようなファイルまたはディレクトリがありません。
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] エラーメッセージ MongoError: bad auth URI 文字列で認証に失敗しました。
-
[解決済み] ランタイム 'node' が PATH で見つからない - Visual Studio Code と Node.js
-
[解決済み] "致命的なエラーです。grunt "コマンドを実行すると、"Unable to find local grunt. "と表示されます。